CentOS 5.5安装与配置Postfix

35 篇文章 0 订阅
  在大多情况下,对于很多的系统(像CentOS)Sendmail是默认的MTA(邮件传输代理),但它相当的难配置与维护(即使在过去的几年进行改进)。而Postfix配置简单,且效率高。

 

一、安装Postfix(版本查看 postconf mail_version)

  1. yum install postfix

在CentOS系统一般都自带sendmail的,如果你不需要了,可以使用以下命令删除:

  1. rpm -e sendmail

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

我们先来检查默认的MTA

  1. alternatives --display mta
  1. mta - status is manual.
  2. link currently points to /usr/sbin/sendmail.sendmail
  3. /usr/sbin/sendmail.sendmail - priority 90
  4. slave mta-pam: /etc/pam.d/smtp.sendmail
  5. slave mta-mailq: /usr/bin/mailq.sendmail
  6. slave mta-newaliases: /usr/bin/newaliases.sendmail
  7. slave mta-rmail: /usr/bin/rmail.sendmail
  8. slave mta-sendmail: /usr/lib/sendmail.sendmail
  9. slave mta-mailqman: /usr/share/man/man1/mailq.sendmail.1.gz
  10. slave mta-newaliasesman: /usr/share/man/man1/newaliases.sendmail.1.gz
  11. slave mta-aliasesman: /usr/share/man/man5/aliases.sendmail.5.gz
  12. slave mta-sendmailman: /usr/share/man/man8/sendmail.sendmail.8.gz
  13. /usr/sbin/sendmail.postfix - priority 30
  14. slave mta-pam: /etc/pam.d/smtp.postfix
  15. slave mta-mailq: /usr/bin/mailq.postfix
  16. slave mta-newaliases: /usr/bin/newaliases.postfix
  17. slave mta-rmail: /usr/bin/rmail.postfix
  18. slave mta-sendmail: /usr/lib/sendmail.postfix
  19. slave mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
  20. slave mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
  21. slave mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
  22. slave mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
  23. Current `best version is /usr/sbin/sendmail.sendmail.

我们从以上看出,现在默认的MTA是sendmail。所以我们需要键入以下命令更新MTA为Postfix。

  1. /usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix

再次检查看MTA是不是改为Postfix了。

  1. alternatives --display mta

三、配置Postfix

Postfix配置文件主要是两个master.cf和main.cf,这里我们只需要配置main.cf,即/etc/postfix/main.cf。
编辑main.cf文件

  1. vim /etc/postfix/main.cf

在文件main.cf找到以下的几行并按照下面的更改好。

  1. myhostname = mail.1a-centosserver.com
  2. mydomain = 1a-centosserver.com
  3. myorigin = $mydomain
  4. inet_interfaces = all
  5. mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  6. mynetworks = 192.168.13.0/24, 127.0.0.0/8
  7. relay_domains =
  8. home_mailbox = Maildir/

配置文件解释:
mydomain:
mydomain参数是指email服务器的域名,请确保为正式域名(如centos.bz)
myhostname:
myhostname参数是指系统的主机名称(如我的服务器主机名称是mail.centos.bz)
myorigin:
myorigin参数指定本地发送邮件中来源和传递显示的域名。在我们的例子中,mydomain是centos.bz,也是我的域名。
对于下面的一行,我们的邮件地址是user@centos.bz而不是user@mail.centos.bz。
myorigin = $mydomain
mynetworks:
mynetworks参数指定受信任SMTP的列表,具体的说,受信任的SMTP客户端允许通过Postfix传递邮件。
mydestination:
mydestination参数指定哪些邮件地址允许在本地发送邮件。这是一组被信任的允许通过服务器发送或传递邮件的IP地址。用户试图通过发送从此处未列出的IP地址的原始服务器的邮件将被拒绝。
inet_interfaces:
inet_interfaces参数设置网络接口以便Postfix能接收到邮件。
relay_domains:
该参数是系统传递邮件的目的域名列表。如果留空,我们保证了我们的邮件服务器不对不信任的网络开放。
home_mailbox:
该参数设置邮箱路径与用户目录有关,也可以指定要使用的邮箱风格。

四、测试Postfix SMTP连接

1、检查Postfix是否已经启动

  1. service postfix status
  2. master (pid 4073) is running...

如果没有使用service postfix start启动
2、检测默认smtp端口25是否已经监听

  1. netstat -an | grep 25
  2. tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN

3、设置postfix开机启动

  1. chkconfig postfix on

4、开始测试postfix是否工作正常。

  1. telnet localhost 25
  2. Trying 127.0.0.1...
  3. Connected to localhost.localdomain (127.0.0.1).
  4. Escape character is ^].
  5. 220 mail.centos.bz ESMTP Postfix
  6. ehlo mail
  7. 250-mail.centos.bz
  8. 250-PIPELINING
  9. 250-SIZE 10240000
  10. 250-VRFY
  11. 250-ETRN
  12. 250-ENHANCEDSTATUSCODES
  13. 250-8BITMIME
  14. 250 DSN
  15. mail from:<jane>
  16. 250 2.1.0 Ok
  17. rcpt to:<james>
  18. 250 2.1.5 Ok
  19. data
  20. 354 End data with <CR><LF>.<CR><LF>
  21. This is a test mail send from Jane
  22. .
  23. 250 2.0.0 Ok: queued as 8E93F27DF3
  24. quit
  25. 221 2.0.0 Bye
  26. Connection closed by foreign host.

邮件发送到哪里了?所有的邮件已经发送到/home/user/Maildir/new。我们以上的例子,邮件已经发送到/home/james/Maildir/new。我们可以使用cat命令查看。


Now you can verify if the daemons are running properly by issuing netstat -an|grep LISTEN

The output should look similar like that:

bond:~ # netstat -an|grep LISTEN
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN

The port are assigned like this:

  • 993 imap-ssl

  • 995 pop3-ssl

  • 3306 mysql

  • 110 pop3

  • 143 imap

  • 2000 sieve

  • 80 http

  • 25 smtp

  • 443 https


五、邮件别名设置

设置邮件别名可以使多个用户收到来自一个用户(如root)发送的邮件。
1、配置邮件别名
邮件别名的配置文件在/etc/aliases里,格式如下:
[Format]
Receiving Account or other aliases : recipient A, recipient B, recipient C ..
例1:重新发送邮件到另一用户
root:root,james
上面的例子表示,root用户的邮件对于用户james和root都可以接收到。
例2:设置群邮件
class2011: james, ann, mark
上面的例子表示我们设置了群邮件名class2011.当tutor发送一封邮件到class2011@centos.bz时,一群用户(如james,ann,mark)都会收到邮件。
2、使用“newaliases”命令激活邮件别名功能
当我们编辑/etc/aliases文件后,必须执行“newaliases”命令来更新别名数据库。

六、POP/ IMAP设置

为了让用户能在本地机器下载邮件,你必须在你的CentOS Linux邮件服务器安装设置POP或IMAP。Dovecot是适用CentOS Linux邮件系统有名的imap/pop服务器之一,它支持maildir和mbox格式。
安装配置Dovecot
首先检测dovecot软件包是否已经安装

  1. rpm -qa dovecot

否则,你可以使用yum命令安装

  1. yum -y install dovecot

Dovecot的配置文件在/etc/dovecot.conf。我们只需要改变少量的代码就可以让POP3工作。

  1. vim /etc/dovecot.conf
  2. # Protocols we want to be serving: imap imaps pop3 pop3s
  3. # If you only want to use dovecot-auth, you can set this to "none".
  4. protocols = imap imaps pop3 pop3s

删除protocols行前面的“#”以激活imap imaps pop3和pop3s服务。
启动dovecot服务。

  1. service dovecot start

设置dovecot开机启动。

  1. chkconfig dovecot on

测试Dovecot服务。
1、使用telnet检测110(POP3)和143(IMAP)端口

  1. telnet 127.0.0.1 110
  2. Trying 127.0.0.1...
  3. Connected to mail.centos.bz (127.0.0.1).
  4. Escape character is ^].
  5. +OK Dovecot ready.
  6. quit
  7. +OK Logging out
  8. Connection closed by foreign host.
  9.  
  10. telnet 127.0.0.1 143
  11. Trying 127.0.0.1...
  12. Connected to mail.centos.bz (127.0.0.1).
  13. Escape character is ^].
  14. * OK Dovecot ready.

2、使用“ps aux | grep dovecot”命令来显示dovecot守护进程

  1. ps aux | grep dovecot
  2. root 10322 0.0 0.0 1868 576 ? Ss 12:17 0:00 /usr/sbin/dovecot
  3. root 10323 0.0 0.2 7692 1864 ? S 12:17 0:00 dovecot-auth
  4. dovecot 10325 0.0 0.2 4884 1744 ? S 12:17 0:00 pop3-login
  5. dovecot 10326 0.0 0.2 4884 1744 ? S 12:17 0:00 pop3-login
  6. dovecot 10328 0.0 0.2 4888 1748 ? S 12:17 0:00 imap-login
  7. dovecot 10330 0.0 0.2 4888 1752 ? S 12:17 0:00 imap-login
  8. dovecot 10332 0.0 0.2 4884 1740 ? S 12:17 0:00 pop3-login
  9. dovecot 10338 0.0 0.2 4888 1752 ? S 12:19 0:00 imap-login
  10. root 10347 0.0 0.0 3912 672 pts/3 R+ 12:23 0:00 grep dovecot

现在你可以使用邮件客户端代理软件来连接我们的Dovecot服务器了。


相关链接:

http://www.linuxidc.com/Linux/2011-04/34845p3.htm  postfix安全配置

制作postfix的签名证书

制作dovecot的签名证书


http://www.postfix.ru/viewtopic.php?p=44017


http://blog.51yip.com/server/1382.html


postfix 安装配置详解

张映 发表于 2012-04-17

分类目录: 服务器相关

DNS服务器服务器自己可以不用搭,用第三方的就可以了。访问大也没有什么问题,我现在做游戏这一块,游戏要推广的,推广的时候一天的独立IP就可以达到700W左右。我用了dnspod的企业版,一年600块钱不到。邮件服务器,最好还是自己搭,用别人的邮件的服务器,会受到限制的。发到多少封就不给发了,这就挺郁闷的了。下面简单介绍一下在centos6 64位机器上搭建postfix邮件服务器。

一,安装postfix,cyrus-sasl,cyrus-imapd

如果yum提示找不到软件包,请换一下源,请参考centos 6推荐使用epel源

  1. [root@localhost ~]# yum install postfix  
  2. [root@localhost ~]# yum install cyrus*  

二,删除了sendmail

  1. [root@localhost ~]# rpm -e sendmail  
  2. 或者  
  3. [root@localhost ~]# yum remove sendmail  

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

  1. [root@localhost sasl2]# alternatives --config mta  
  2.   
  3. 共有 1 个程序提供“mta”。  
  4.   
  5.   选择    命令  
  6. -----------------------------------------------  
  7. *+ 1           /usr/sbin/sendmail.postfix  
  8.   
  9. 按 Enter 来保存当前选择[+],或键入选择号码:1  

上面的只有一个postfix,sendmail已经被我删了。可以通过下面命令来查看。

  1. [root@localhost ~]# alternatives --display mta  

四,postfix,cyrus-sasl,cyrus-imapd相关配置

1,postfix主配置文件main.cf

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

如果不加local_recipient_maps这个配置,收邮件收不到,下面是qq的退信。

收件人邮件地址(tank@51yip.com)不存在,邮件无法送达。host mail.51yip.com[122.225.***.***] said: 550 5.1.1: Recipient address rejected: User unknown in local recipient table (in reply to RCPT TO command)

2,cyrus-sasl配置

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

在这里要提一下的32位的机器和64位的机器smtpd.conf的路径是不一样的。

  1. //这是centos 5.5 32位机器上smtpd的配置文件  
  2. [root@linux sasl2]# ls |grep conf  
  3. Sendmail.conf  
  4. smtpd.conf  
  5. [root@linux sasl2]# pwd  
  6. /usr/lib/sasl2  
  7.   
  8. //这是centos 6.0 64位机器上smtpd的配置文件,其他地方没有smtpd的配置文件  
  9. [root@localhost postfix]# ls /etc/sasl2/ |grep smtpd  
  10. smtpd.conf  

网上有不少关于postfix安装文章,配置的时候并没有明确提出是32位机器,还是64位机器。所以在这里标明一下。

3,配置cyrus-imapd

cyrus-imapd的主要配置文件有下面三个

/etc/sysconfig/cyrus-imapd

/etc/cyrus.conf

/etc/imapd.conf

这里是默认的配置,也就是说上面三个文件我是没有动过的。在这里提醒一下imapd.conf在这个文件里面,你可以设置管理账号

,设置邮件存放目录,设置密码连接方式等。

五,启动postfix,cyrus-sasl,cyrus-imapd

启动cyrus-imapd服务,就可以同时提供pop和imap服务,如果你已安装了dovecot服务就可以删除掉,cyrus-imapd和dovecot二者选其一就行了,二都可以提供pop和imap服务,不过cyrus-imapd可以为每个用户创建一个信息,而且信箱具有层次结构,比较好管理。建议用cyrus-imapd。

  1. [root@linux sasl2]# /etc/init.d/postfix start  
  2. [root@linux sasl2]# /etc/init.d/saslauthd start  
  3. [root@linux sasl2]# /etc/init.d/cyrus-imapd start  
  4.   
  5. 查看一下进程,  
  6. //smtp监听是25端口  
  7. [root@linux u]# netstat -tpnl |grep smtpd  
  8. tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      6319/smtpd    
  9.   
  10. //110(POP3)和143(IMAP)端口,下面都已经有了  
  11. [root@linux u]# netstat -tpnl |grep cyrus  
  12. tcp        0      0 0.0.0.0:993                 0.0.0.0:*                   LISTEN      23593/cyrus-master  
  13. tcp        0      0 0.0.0.0:995                 0.0.0.0:*                   LISTEN      23593/cyrus-master  
  14. tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      23593/cyrus-master  
  15. tcp        0      0 0.0.0.0:2000                0.0.0.0:*                   LISTEN      23593/cyrus-master  
  16. tcp        0      0 :::993                      :::*                        LISTEN      23593/cyrus-master  
  17. tcp        0      0 :::995                      :::*                        LISTEN      23593/cyrus-master  
  18. tcp        0      0 :::110                      :::*                        LISTEN      23593/cyrus-master  
  19. tcp        0      0 :::143                      :::*                        LISTEN      23593/cyrus-master  
  20. tcp        0      0 :::2000                     :::*                        LISTEN      23593/cyrus-master    
  21.   
  22. 启动是没有问题的。  


如果出现sasl验证错误如:# testsaslauthd -u felipe.alfaro -p password
0: NO "authentication failed"
可以查看日志:
# tail /var/log/messages

六,测试cyrus-sasl

  1. [root@linux t]# passwd cyrus  //设置cyrus的密码  
  2. [root@linux sasl2]# testsaslauthd -u cyrus -p '******'   //系统用户和密码  
  3.  0: OK "Success."  

如果显示是上面的内容说是smtp是没有什么问题

七,cyrus-imapd生产邮件管理员账号,并添加测试账号

安装完cyrus-imapd后会产生一个管理账号是cyrus,所属用户组是mail

  1. [root@linux sasl2]# id cyrus    //imapd.conf里面默认的管理员账号就是cyrus  
  2.  uid=76(cyrus) gid=12(mail) groups=12(mail),76(saslauth)  

在认证admin账号时,我发现32位系统和64位系统有一点不同,二种系统我都配置过,配置都是一样的,
但是出现的结果不一样,看下图

32位机器cyrus管理员用户认证

32位机器cyrus管理员用户认证

64位机器cyrus管理员用户认证

64位机器cyrus管理员用户认证

从上图可以看出,32位的系统是不用加上--auth plain,64位的要,如果不加的话,根本进不去。

进去后,我们来添加一下测试账号

  1. [root@linux sasl2]# cyradm -u cyrus localhost  
  2.  IMAP Password:  
  3.  localhost> cm tank  
  4.  localhost> lm  
  5.  tank (\HasNoChildren)  
  6.  localhost> quit  

这样我们可以在/var/spool/imap中看到,生成的目录,32位机器和64位机器生成的目录是不一样的

  1. //这是64位系统生成的目录  
  2.  [root@localhost u]# ls  
  3.  user^tank  
  4.  [root@localhost u]# pwd  
  5.  /var/spool/imap/u  
  6.   
  7. //这是32位系统生成的目录  
  8.  [root@linux t]# ls  
  9.  tank  
  10.  [root@linux t]# pwd  
  11.  /var/spool/imap/t  

八,测试收发邮件

测试前添加一下DNS,
1,mail.51yip.com A 默认 122.225.***.***
2,mail.51yip.com A 联通 60.12.***.***
3,@ MX 默认 mail.51yip.com
第1和第2,是添加二条A记录,第三行,设置了一下MX记录,这个千万不要忘了,不然你的域名是不通的。

方法有很多,我们可以利用telnet来测试,不过用telnet来测试收发邮件比较麻烦,用linux自带的
mail命令就方便多了

  1. [root@localhost u]# mail -s '看一下' 95219454@qq.com  < /etc/imapd.conf  

以前有朋友问我,他配置的邮件服务器,发出去的邮件都在垃圾箱里面,我配过几次都没有发现这种情况看下图

发邮件已成功

发邮件已成功

从QQ发的邮件已成功

从QQ发的邮件又成功

我们还可以通过maillog日志来查看邮件是否收发成功,看下图

日志查看,收发邮件

日志查看,收发邮件

到这儿,简单的邮件服务器就搭好了。

vi /usr/lib/sasl2/smtpd.conf

here is my smtpd.conf

Code:
pwcheck_method: saslauthd
 mech_list: plain login
 allow_plaintext: true
 auxprop_plugin: mysql
 sql_hostnames: 127.0.0.1
 sql_user: xxxx
 sql_passwd: xxxx
 sql_database: xxxx
 sql_select: select password from users where email = '%u'

参考:http://www.postfix.org/SASL_README.html

         http://blog.chinaunix.net/uid-15866552-id-3672840.html

         http://blog.csdn.net/rainysia/article/details/7727750

         http://www.extmail.org/forum/thread-5801-1-1.html

        http://serverfault.com/questions/364873/new-mail-server-cant-send-emails-only-receives


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值