Postfix邮件系统(一)


一、电子邮件系统基础

1)、邮件系统角色、邮件协议

【前提条件】:需要DNS服务器提供域名的解析

1、电子邮件系统的角色

【MTA(Mail Transfer  Agent,电子传输代理)】

一般称为邮件服务器软件

负责接收客户端软件发送的邮件,并将邮件传输给其他的MTA程序

包括:ExchangeSendmailPostfix

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

一般称为邮件客户端软件

功能:为用户提供发送、接收和管理电子邮件的界面

包括:OutlookFoxmailOutlook Express

【MDA(Mail Delivery  Agent,邮件分发代理)】

MDA软件负责在服务器中将邮件分发到用户的邮箱记录

Postfix就集成了MDA的功能

2、邮件通信协议

【SMTP(Simple  Mail Transfer  Protocol,简单邮件传输协议)】

作用:用于发送和传输邮件

端口:TCP/25

【POP(Post  Office Protocol,邮局协议)】

作用:用于从邮件服务器中收取邮件

端口:TCP/110

【IMAP(Internet  Message Access  Protocol,互联网消息访问协议)】

作用:用于收取邮件

端口:TCP/143

2)、常见的邮件服务器软件

1、商业邮件系统

【Exchange】:微软公司收费产品,windows服务器平台构建邮件系统的首选产品

【Notes/Domino】:IBM公司收费产品,多应用于一些高校、政府、银行类型的企业

2、开源邮件系统

【Sendmail】:运行在UNIX/Linux环境中,属于早期产品,sendmail运行的稳定性较好,但安全性欠佳

【Qmail】:运行在UNIX/Linux环境中,比sendmail具有更好的执行效率,且配置,管理更加方便

【Postfix】:运行在UNIX/Linux环境中,其目的是为Sendmail提供一个更好的替代产品,postfix在投递效率、稳定性、服务性能及安全性能方面都相当的出色

二、Postfix邮件服务基础

Postfix邮件服务器采用模块化的设计,由许多个不同的程序集合而成,分别用于实现不同的功能

Postfix在启动时首先启动名为master的进程,由master进程主导邮件的处理工作,并在需要时自动加载其他程序以协同工作

1)、编译安装及服务控制

1、准备工作

        /etc/init.d/sendmail  stop                                       /先要停止此服务

        Chkconfig  --level 2345  sendmail  off        /永久关闭它

        Rpm  -qa |  grep  cyrus                                    /查看cyrus相关软件包

《注意》:

虽然停了sendmail的服务,但不能卸载它,因为Postfix能兼容sendmail,如果把sendmail卸了,那么在安装postfix时就找不到对应的目录。

   yum -y  install  db*-devel

   yum  -y install  cyrus-sasl-*         /安装相关依赖包

        yum  -y install  pam-devel*

2、源码编译安装

【创建运行组、用户】

   groupadd -g  1200  postdrop

   groupadd -g  1000  postfix

   useradd -M  -u  1000 -g  postfix  -G postdrop  -s  /sbin/nologin postfix

【解包】

   tar zxf  postfix-2.8.2.tar.gz  -C /usr/src

   cd /usr/src/postfix-2.8.2

【配置】

   make makefiles  ‘CCARGS=-DUSE_SASL_AUTH  -DUSE_CYRUS_SASL  -I/usr/include/sasl’  ‘AUXLIBS=-L/usr/lib/sasl2  -lsasl2’

#CCARGS参数:为编译器提供额外的扩展参数。例如启用SASL认证,并指出cyrus_sasl认证程序的文件位于/usr/include/sasl  

#AUXLIBS参数:为编译器指出位于标准位置之外的额外函数库。例如,cyrus_sasl认证程序的库文件位于/usr/lib/sasl2/

   make &&  make  install

   postconf -a                /检查所支持的认证方式

3、postfix服务控制

   postfix start              /启动postfix服务

   netstat -antp  |  grep 25  /查看服务进程’master’是25号端口

   postfix check              /语法检查

2)、主要目录和配置文件

1、主要目录

/etc/postfix:postfix服务的主配置文件,各类脚本、查询等表

/usr/libexec/postfix:包括postfix服务的各个服务器程序文件

/var/spool/postfix:包括postfix服务的邮件队列相关的子目不录

incoming(传入):存放刚接收到的邮件

active(活动):存放正在投递的邮件

deferred(推迟):存放以前投递失败的邮件

hold(约束):存放被阻止发送的邮件

corrupt(错误):存放不可读或不可分析的邮件

/usr/sbin/:包括postfix服务的各种管理工具程序,这些程序文件名以post开头

postalias:构造、修改和查询别名表

postconf:显示和编辑main.cf配置文件

postfix:启动、停止postfix邮件服务,要求有root用户权限

postmap:构造、修改或查询查询表文件

postqueue:查看邮件队列、一般用户可以使用

postsuper:管理邮件队列,要求有root用户权限

2、主要配置文件

【包括】:main.cf/一般不改它   master.cf/一般改它

【位置】:/etc/postfix/目录下

      postconf -n  >  ganbing               /简化参数并输出为“ganbing”

      mv /etc/postfix/main.cf /etc/postfix/main.cf.bak   /改名

      mv ganbing  /etc/postfix/main.cf          /把ganbing移动并改名

3、postfix的日志文件

【位置】:/var/log/maillog

【定义】:该文件中记录了本机中的邮件进出相关的消息,包括邮件服务的启动、出错、与其他SMTP服务器的会话信息等

三、邮件服务器的基本构建

1)、配置SMTP发信服务

【位置】:/etc/postfix/main.cf

1、设置main.cf并启动服务

vim  /etc/postfix/main.cf              

   inet_interfaces=10.0.0.1 127.0.0.1 /监听服务器的IP地址默认为all

   myhostname=mail.benet.com              /邮件服务器的主机名

   mydomain=benet.com                     /邮件域

myorigin=$mydomain                  /引用邮件域,外发邮件时发件人地址中的邮件域

   mydestination=$mydomain,$myhostname    /允许投递到本地的目标邮件域

   home_mailbox=Maildir/                  /设置邮件存储位置和格式

postfix  reload

【postfxi支持两种最常见的邮箱存储方式】

Mailbox:同一个用户的所有邮件内容存储为单个文件,保存在/var/spool/mail/目录下,文件名与用户名相同,Mailbox存储方式比较古老,当邮件数量较多时会降低查询和管理效率

Maildir:使用目录结构来存储用户的邮件内容,每一个用户使用一个目录,每封邮件都作为独立的文件存放,Maildir方式的存取速度和效率要好一些

2、添加邮箱账号

groupadd  mailusers                            /创建邮箱用户组,也可不要

useradd  -g mailusers  -s /sbin/nologin  gan      /新建账号gan

passwd  gan                                   /设个密码

useradd  -g mailusers  -s /sbin/nologin  bing     /新建账号bing

passwd  bing

3、SMTP发送邮件测试

telnet  mail.benet.com  25          /连接到postfix服务器

helo  nihao                     /打招呼,告诉客户机在哪

mail from: [email protected]       /告知发件人地址

rcpt to: [email protected]    /告知收件人地址

data                        /告知要发送邮件数据

          #################

subject:this is a test mail /指定邮件标题

          ###############.     /邮件正文,以.点号表示结束正文

quit                        /断开并退出连接

   ls -lh  /home/bing/Maildir/new

   cat /home/bing/Maildir/mew/130.....mail.benet.com      /查看邮件内容

2)、配置POP/IMAP收信服务

Dovecot是一个安全性较好的pop3/IMAP服务器软件,响应速度快而且扩展性好

Dovecot默认也使用Linux的系统用户,并通过PAM(Pluggable  Authentication  Module,可插拔认证模块)机制进行身份认证,只有通过认证后才允许用户收取邮件

1、编译安装Dovecot软件包

【预先创建运行用户】

   useradd -M  -s  /sbin/nologin dovecot

   useradd -M  -s  /sbing/nologin  dovenull

【源码编译安装】

   tar zxf  dovecot-2.0.12.tar.gz  -C /usr/src/

   cd /usr/src/dovecot-2.0.12

   ./configure --sysconfdir=/etc         /指定配置文档的父目录

   make &&  make  install

【添加为系统服务dovecot】

   cp doc/dovecot-initd.sh /etc/init.d/dovecot

   chkconfig --add  dovecot

2、建立配置文件,并启动服务

【建立配置文档】

   cp -r /usr/local/share/doc/dovecot/example-config/*  /etc/dovecot/

   vim /etc/pam.d/dovecot

      #%PAM-1.0

      auth       required      pam_nologin.so

      auth       include           system_auth

      account       include           system_auth

      session       include           system_auth

【调整主配置文件】

   vim /etc/dovecot/dovecot.conf

      ......//省略部分内容

      !include conf.d/lo-auth.conf      /只使用系统用户认证

      ssl=no                          /禁用SSL机制

      disable_plaintext_auth=no          /允许明文的验证

      mail_location=maildir:~/Maildir /设置邮箱格式及位置

【启动dovecot服务,并确认监听状态】

   /etc/init.d/dovecot  start

   netstat -anpt  |  grep dovecot

3)、测试发信、收信功能

使用Microsoft  office 2007的Outlook为例

1、设置邮箱账号

2、发送邮件测试

3、接收邮件测试