菜鸟学Linux 第060篇笔记 mail server概念,postfix 编译

简介:

菜鸟学Linux 第060篇笔记 mail server概念,postfix 编译


Mail Server


TLS: Transport Layer Security

SMTP: Simple Mail Transfer Protocol

ESMTP: Extended Simple Mail Transfer Protocol


POP3: Post Office Protocol vertion 3

IMAP4: Internet Mail Access Protocol (消耗资源大,但功能也相对强)



UUCP: Unix to Unix CoPy

Unix 主机复制文件的协议

SMTP: (25/tcp)

C/S 



邮件传输 MT (Mail Transfer)

邮件投递 MD (Mail Delivery)

邮件用户 MU (Mail User)

邮件用户代理 MUA (Mail User Agent)

邮件传输代理 MTA (Mail Transfer Agent)

邮件投递代理 MDA (Mail Delivery Agent)

邮件取回代理 MRA (Mail Retrieval Agent)

MUA 从 MRA 取邮件 用 POP3 or IMAP4

LMTP Local Mail Transfer Protocol

smtpd

SMTP Simple Mail Transfer Protocol




邮件传递过程

MUA --> smtp --> SMTPD --> smtp --> SMTPD --> MDA --> MUA




Open Relay: 开放式中继 (一般不允许中继)



SASL:  Simple Authentication Secure Layer 简单认证安全层 协议



WebMail 


LDAP: Lightweight Directory Access Protocol

是一个可以提供快速检索的协议,比mysql检索的速度快10倍

缺点 写的速度慢

虚拟用户 仅用于访问某服务的数字标识

用户: 字符串 凭证(加密存放)



组建软件

MTA 邮件传输代理 Mail Transfer Agent  SMTP服务器  (实现的软件)

sendmail, uucp

单体结构, SUID, 配置文件语法不好理解(m4编写)

qmail

postfix 模块化设计,安全,跟sendmail兼容,效率高

exim

Exchange (Windows, 异步消息协作平台)

SASL: v2

cyrus-sasl(saslauthd) 框架

courier-authlib

MDA 邮件投递代理 Mail Delivery Agent

procmail (sendmail)

maildrop

MRA 邮件取回代理 Mail Retrieval Agent (pop3, imap4) 实现软件

cryus-imap

dovecot


MUA 邮件用户代理 Mail User Agent

Outlook Express, Outlook

Foxmail

Thunderbird

Evolution

mutt(文本界面)


WebMail

Openwebmail   (perl)

Squirrelmail  (php)

Extmail (Extman管理组件) (perl)

EOS(Extmail OS), CentOS




邮件服务器布署

Postfix + SASL (courier-authlib) 发邮件

Dovecot + MySQL 收邮件

Webmail: Extmail + Extman + httpd


postfix: rpm 包不支持虚拟用户




1. 布署postfix

# service sendmail stop

# chkconfig sendmail off

# rpm -e --nodeps sendmail

确保linux系统里已经安装了MySQL 前边章节有,这里不再详解其安装过程


# groupadd -g 2525 postfix

# useradd -g 2525 -u 2525 -M -s /sbin/nologin postfix

# groupadd -g 2526 postdrop

# useradd -g 2526 -u 2526 -M -s /sbin/nologin postdrop

# make makefiles 'CCARGS=-DASH_MYSQL -I/usr/local/mysql/include -DUSE_SASL_AUTH 

-DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 

'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm -L/usr/lib/sasl2 

-lsasl2 -lssl -lcrypto' (此为一行命令)

# make

# make install


启动postfix

# postfix start

postfix 配置文件:

postfix模块化:

master: /etc/postfix/master.cf

mail: /etc/postfix/main.cf

参数 = 值  (参数必须写在行的绝对行首,以空白开头的行被认为是上一行的延续)

postconf (Postfix configuration utility) 

-d     Print main.cf  default  parameter  settings  instead  of

   actual  settings.   Specify  -df  to fold long lines for

   human readability (Postfix 2.9 and later).

   

-n     Show only configuration parameters  that  have  explicit

           name=value  settings  in  main.cf.   Specify -nf to fold

           long  lines  for  human  readability  (Postfix  2.9  and

           later).

   

-m     List  the  names of all supported lookup table types. In

           Postfix configuration files, lookup tables are specified

           as  type:name,  where  type  is  one of the types listed

           below. The table name syntax depends on the lookup table

           type as described in the DATABASE_README document.

   

-A     List the available SASL client plug-in types.  The  SASL

           plug-in  type  is  selected  with  the smtp_sasl_type or

           lmtp_sasl_type configuration  parameters  by  specifying

           one of the names listed below.

           cyrus  This  client plug-in is available when Postfix is

                  built with Cyrus SASL support.

-e     Edit the main.cf configuration file, and update  parame-

           ter  settings  with  the "name=value" pairs on the post-

           conf(1) command line.


smtp状态码

1xx 纯信息

2xx 正确

3xx 上一步操作尚未完成,需要继续补充

4xx 暂时性错误

5xx 永久性错误

smtp协议原语(命令)telnet localhost 25

helo (smtp协议) hostname

ehlo (esmtp协议) hostname

mail from: root

rcpt to  (recipient 接受方)

data

.

alias: 邮件别名

abc@mysky.com: postmaster@mysky.com

/etc/aliases --> hash --> /etc/aliases.db

# newaliases



postfix默认把本机的IP地址所在的网段识别为本地网络,并且为之中继邮件;

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1886015如需转载请自行联系原作者



Winthcloud

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
Linux 编译器 开发工具
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
【Linux快速入门(三)】Linux与ROS学习之编译基础(Cmake编译)
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
501 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
NoSQL Linux 编译器
GDB符号表概念和在Linux下获取符号表的方法
通过掌握这些关于GDB符号表的知识,你可以更好地管理和理解你的程序,希望这些知识可以帮助你更有效地进行调试工作。
720 16
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
355 20
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
351 0
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
449 0
|
存储 Linux 调度
【Linux】进程概念和进程状态
本文详细介绍了Linux系统中进程的核心概念与管理机制。从进程的定义出发,阐述了其作为操作系统资源管理的基本单位的重要性,并深入解析了task_struct结构体的内容及其在进程管理中的作用。同时,文章讲解了进程的基本操作(如获取PID、查看进程信息等)、父进程与子进程的关系(重点分析fork函数)、以及进程的三种主要状态(运行、阻塞、挂起)。此外,还探讨了Linux特有的进程状态表示和孤儿进程的处理方式。通过学习这些内容,读者可以更好地理解Linux进程的运行原理并优化系统性能。
667 4
|
Ubuntu Linux Go
golang编译成Linux可运行文件
本文介绍了如何在 Linux 上编译和运行 Golang 程序,涵盖了本地编译和交叉编译的步骤。通过这些步骤,您可以轻松地将 Golang 程序编译成适合 Linux 平台的可执行文件,并在目标服务器上运行。掌握这些技巧,可以提高开发和部署 Golang 应用的效率。
3522 14