技术帮
 

Postfix安装与配置

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

1472955908895017376.png说两句


本文档是基于CentOS minimal 6.5版本的Linux系统上进行Postfix邮件服务器的安装和配置的,事实上,该版本的CentOS中自带了Postfix,因此安装过程基本需要处理的比较少,不过还是要废话几句。

本文档搭建邮件系统的主要目的是用于内部系统自动群发邮件使用的,并没有打算提供给企业内部用户办公使用,因此最终达到的效果是可以通过telnet命令发送邮件、通过Java程序自动发送邮件,实现批量发送邮件。

但并没有给每个企业用户创建一个邮件账号,也没有一个邮件管理系统的管理界面。


1473058358717068189.png 检查软件的安装

* 首先卸载sendmail

因为postfix就是为了代替sendmail的产品,因此安装postfix就不需要sendmail了,卸载即可。

使用命令如下:

yum remove sendmail 

或者采用

rpm -e sendmail 

说明:该操作也是为了有备无患,其实CentOS minimal 6.5本身就没有装sendmail

关于yum和rpm命令的使用方法和参数,可以自己百度一下。


* 安装postfix

1 先查看一下是否已经安装了postfix

使用如下命令可以查看是否已经安装了postfix 

yum list postfix 

结果如下:

blob.png

或者使用rpm命令也可以:

rpm -qa postfix 

blob.png


另外,postfix安装成功后会在CentOS中部署为服务,可以通过查看服务来确认是否安装成功了postfix。毕竟前两个查看方式可能没办法保证程序真正运行无误。

chkconfig --list  

该命令可以查看当前CentOS安装的所有服务

blob.png

可以看到postfix确实安装好且已经做成服务了,并且当前的状态是在Linux level2345启动模式下自动启动该服务。关于Linux的启动Level,可以自行百度一下

修改postfix的启动模式:

打开开机启动

chkconfig --level 2345 postfix on  

关闭开机启动

chkconfig --level 2345  postfix  off


如果手动启动、停止、重启postfix可以使用以下命令:

启动

service postfix start  

停止

service postfix stop  

重启

service postfix restart  


* 安装cyrus-sasl 和 cyrus-imapd 

SASL,是Simple Authentication Security Layer的缩写,字面意思是简单安全验证层。cyrus-sasl是卡耐基梅林大学计算机服务中心提供的一个SASL服务的产品。这是一个胶合层,该产品将应用层与各种各样的认证系统的产品结合了起来。他说:我们不生产认证,我们只是认证系统的搬运工


IMAP是Internet message access protocal,互联网消息访问协议,主要提供了邮件和新闻组的服务。安装这个cyrus-imapd可以为每个用户创建自己的收件箱和发件箱。


查看这两个软件是否已经安装了:

blob.png


如果没有安装,可以直接执行yum 命令进行安装:

yum install cyrus*  


* 更改默认邮件传输代理(MTA)  

首先解释一下MTA,邮件系统有三个部分:MUA  MTA  和 MDA  

MUA : 邮件用户代理,管理用户客户端的邮件收发 

MTA:邮件传输代理,管理用户的发件和收件

MDA:邮件投递代理,管理用户收到的邮件存在收件箱还是垃圾箱


根据本文的需求可以知道,我们其实重点就是要实现MTA,就是帮助用户将邮件发送出去。

CentOS系统中可能会安装多个邮件传输代理软件,比如sendmail,所以,这里要设置一下默认的MTA。

alternatives  --config  mta  

这个命令就是指定系统默认的MTA用哪个。

用过安卓手机的有这个经验,如果手机上安装了多个浏览器,在打开一个网址的时候,会提示请选择默认浏览器,其实alternatives的意思差不多,就是配置CentOS中的某个功能使用哪个软件作为默认软件。

blob.png


至此,安装就完成了,之后就是做配置了。


 Postfix的配置

首先配置main.cf文件,这个文件是postfix的核心配置文件,在/etc/postfix文件夹下。

vim /etc/postfix/main.cf  

这个文件中的内容比较多,主要修改以下几项即可:

[root@localhost postfix]# vim /etc/postfix/main.cf  
myhostname = localhost  //大概76行,将等号后面的部分改写为本机主机名  
mydomain = mjiisb.com   //大概82行,设置域名  
myorigin = $mydomain   //大概97行,把$myhostname改为$mydomain  
inet_interfaces = all  //大概112行,把后面的localhost改成all  
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain //163行,把前面的注释拿掉,并加一下$mydomain  
mynetworks = 192.168.0.0/24, 127.0.0.0/8  //大概263行,设置内网和本地IP  
local_recipient_maps =  //大概209行,把前面的注释拿掉。  
smtpd_banner = $myhostname ESMTP unknow //大概568行,把前面的注释拿掉,然后把$mail_name ($mail_version)改成unknow  
  
//在main.cf文件的底部加上以下内容  
smtpd_sasl_auth_enable = yes     //使用SMTP认证  
broken_sasl_auth_clients = yes   //让不支持RFC2554的smtpclient也可以跟postfix做交互。  
smtpd_sasl_local_domain = $myhostname  // 指定SMTP认证的本地域名  
smtpd_sasl_security_options = noanonymous //取消匿名登陆方式  
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //设定邮件中有关收件人部分的限制  
smtpd_sasl_security_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination //设置允许范围  
message_size_limit = 15728640     //邮件大小  
mailbox_transport=lmtp:unix:/var/lib/imap/socket/lmtp   //设置连接cyrus-imapd的路径


如果不加local_recipient_maps这个配置,收邮件收不到 


 cyrus-sasl配置

[root@localhost postfix]# vim /etc/sasl2/smtpd.conf  //在文件尾部加上以下内容  
log_level: 3     //记录log的模式  
saslauthd_path:/var/run/saslauthd/mux     //设置一下smtp寻找cyrus-sasl的路径

这里提以下,32位CentOS和64位CentOS的配置不同:

32位的smtpd.conf的位置在 /usr/lib/sasl2文件夹下 

64位的smtpd.conf的位置在/etc/sasl2文件夹下


 重新启动postfix  cyrus-sasl  cyrus-imap

[root@localhost /]# service postfix restart
关闭 postfix:                                             [确定]
启动 postfix:                                             [确定]
[root@localhost /]# service saslauthd restart
停止 saslauthd:                                           [确定]
正在启动 saslauthd:                                       [确定]
[root@localhost /]# service cyrus-imapd restart
关闭 cyrus-imapd:                                         [确定]
Exporting cyrus-imapd databases:                           [确定]
Importing cyrus-imapd databases:                           [确定]
正在启动 cyrus-imapd:                                     [确定]


* 查看一下端口

// 查看postfix的端口
[root@localhost /]# netstat -tpnl |grep 25
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN      2153/master
tcp        0      0 :::25                       :::*                        LISTEN      2153/master
// 查看pop3的端口110
[root@localhost /]# netstat -tpnl |grep 110
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      3122/cyrus-master
tcp        0      0 :::110                      :::*                        LISTEN      3122/cyrus-master

// 查看imap的端口143
[root@localhost /]# netstat -tpnl |grep 143
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN      3122/cyrus-master
tcp        0      0 :::143                      :::*                        LISTEN      3122/cyrus-master

三个端口都启动了,说明服务运行正常。


 测试cyrus-sasl

// cyrus-sasl的默认用户账号是cyrus,该用户在mail组下,这里先修改该用户的默认账号
[root@localhost /]# passwd cyrus
更改用户 cyrus 的密码 。
新的 密码:
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
//  测试,如果出现OK Success,说明smtp设置没有问题了
[root@localhost /]# testsaslauthd -u cyrus -p '111111'
0: OK "Success."

[root@localhost /]# id cyrus
uid=76(cyrus) gid=12(mail) 组=12(mail),76(saslauth)


 测试

测试可以使用Linux下的mail命令,如果没有mail可以yum安装一下

yum  install mail  


然后输入命名:

mail  -s  '邮件的主题'  121***95@qq.com  < /etc/postfix/main.cf  


正常情况下,您应该受到了一封邮件,邮件内容是main.cf的内容。