现在位置: 首页 > 邮件邮箱 > 正文

Postfix邮件系统安装与配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

2014年08月20日 评论数 77 ⁄ 被围观 19,657 个+

Postfix邮件系统安装与配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

最近发现邮件发送服务还是挺重要的。可能对于每天只有一百来封的邮件发送需求的个人博主来说,一个免费的邮箱提供的免费SMTP邮件发送服务就可以满足了,但是对于一些大型的网站、论坛和平台,每天的邮件发送量可以达到上万封以上,免费的邮件发送服务是不能满足需要了。

市场上已经有了不少的付费邮件发送服务,但是终归是第三方的邮件发送服务,在邮件发送方式、邮件内容等方面肯定要受到不少的限制。与其花大量的时间寻找更好的付费邮件服务,还不如自己动手利用VPS或者服务器搭建一个属于自己的邮件发送平台,搭建起来并不复杂,使用起来很方便。

本文就来分享一下用Postfix,Cyrus-IMAP,,Dovecot和SPF搭建邮件系统的过程。Postfix是Wietse Venema在IBM的GPL协议之下开发的MTA开源软件,可以用来代替sendmail,特点是免费、灵活、快速和兼容性好,可以承担大量的邮件发送任务。

Cyrus-IMAP和Cyrus-sasl是两个用来提供pop和imap服务,功能和Dovecot 一样,都是开源的IMAP 和POP3邮件服务器。SPF是反垃圾组件,主要的作用就是通过SPF让别人验证自己,域名添加txt记录,向支持SPF功能的邮件服务器提供验证信息。同时验证别人,配置邮件服务器支持 ,对每封进入的邮件进行SPF验证。

经典的邮件系统搭建一般是:(作为发送邮件服务器)+Cyrus-IMAP和Cyrus-sasl或者dovecot(作为接收邮件服务器)+mysql(作为数据库)+ SPF反垃圾验证。当然有人可能还要求有Webmail,有了Webmail界面就能像企业邮局那样在线管理邮件了。

如果暂时不想折腾一个邮件服务器,也可以使用第三方的邮件发送服务,这些邮件发送服务提供了丰富了API接口与开发服务,不少的公司和企业都是用它们完成自己每月上百万封的邮件发送服务请求:

Postfix邮件系统安装与配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPF

一、Postfix,Cyrus-IMAP,Cyrus-sasl 安装

1、CentOS上执行命令:


yum install postfix
yum install cyrus*  

2、删除系统自带的Sendmail。


rpm -e sendmail
或者
yum remove sendmail

3、修改MTA(默认邮件传输d)


alternatives --config mta

4、按下回车键保存当前选择,或者输入数字设置默认。

Postfix设置默认

5、也可以直接输入命令:


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

6、检查一下是不是已经设置成功了。


alternatives --display mta

Postfix检查是不是成功了

二、

1、Postfix的配置文件是main.cf,路径是:/etc/postfix/main.cf。

Postfix配置路径

2、用文本编辑器打开它进行相应的修改,建议将这个文件下载到本地使用Notepad++等常用的代码编辑器修改。

Postfix查找并修改

3、主要是将下面的代码前的#号去掉,如果没有则直接手动添加(用 hostname 可以查看本机主机名)。


myhostname = localhost  //76行,改成本机名称
mydomain = freehao123.com   //82行,设置域名
myorigin = $mydomain   //97行,去掉注释
inet_interfaces = all  //112行,去掉注释
mydestination = $myhostname, localhost.$mydomain, localhost,$mydomain //163行,去掉注释
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的路径

三、Cyrus-IMAP,Cyrus-sasl 配置

1、Cyrus-sasl 配置,编辑:vim /etc/sasl2/smtpd.conf (注意:如果是32位的CentOS,应该是:vim /usr/lib/sasl2/smtpd.conf ),加入以下代码,主要是设置记录Log模式,设置smtp寻找cyrus-sasl的路径。


log_level: 3       
saslauthd_path:/var/run/saslauthd/mux  

Postfix添加代码

2、cyrus-imapd的主要配置文件有:/etc/sysconfig/,/etc/cyrus.conf,/etc/imapd.conf。imapd.conf还包含非常多的参数,例如邮件存储目录、管理员账号、连接认证方式等等,具体的需要参考官网。

四、启动Postfix,Cyrus-IMAP,Cyrus-sasl 

1、 执行以下命令启动Postfix,Cyrus-IMAP,Cyrus-sasl  :


/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/cyrus-imapd start  

Postfix启用服务

2、执行命令:netstat -tpnl |grep smtpd ,可以查看端口是否正常打开 。执行命令:service postfix status 可以查看Postfix状态。以下命令可以设置开机启动:


chkconfig postfix on
chkconfig cyrus-imapd on

3、检测Cyrus-sasl  。先设置一下cyrus密码,命令:passwd cyrus  ,然后使用命令:testsaslauthd -u cyrus -p ‘123546’ 来测试SMTP是否正常。

Postfix检测是否成功

4、检测cyrus-imapd,并创建新的邮件账号。命令:id cyrus是用来查看cyrus管理员账号的,默认的就是cyrus。创建邮件账号命令:


cyradm -u cyrus localhost (32位)
cyradm -u cyrus localhost --auth plain (64位)
cm freehao123 (新建)
lm (显示)
quit (退出)

Postfix创建新的账号

5、 生成的邮件目录是放在/var/spool/imap中,以目录形式存放。查看:ls /var/spool/imap/  ,目录名是用户名的首字母。 

Postfix生成目录

五、Dovecot安装与配置

1、需要说明的是Dovecot和Cyrus-IMAP,Cyrus-sasl只需要选择其中一项即可,否则会出现端口被占用无法启用的情况,执行命令安装:


 yum -y install 

2、 编辑Dovecot的配置文件:/etc/dovecot/dovecot.conf,主要是设置protocols = imap pop3,default_mail_env = maildir:~/Maildir是设置邮件目录,新版的配置文件中如果被注释,直接去掉#号。

3、在/etc/postfix/main.cf 配置中除了按照上面的方法进行相应的修改外,还记得加上:


smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

4、然后加入以下配置文件:


auth default {
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
 }
mechanisms = plain login
}

4、启动dovecot:/etc/rc.d/init.d/dovecot start,重启dovecot:/etc/init.d/dovecot restart,将dovecot设置为开机启动:chkconfig dovecot on 。

六、Postfix邮件系统使用

1、 要想使用Postfix邮件系统,你需要先把邮件系统的域名解析到服务器上,添加一个别名Mail,记录值指向服务器IP,例如:mail.zhujis.com

Postfix设置好A记录

2、将域名的MX设置为:mail.zhujis.com

Postfix添加域名MX

3、待域名DNS生效后,你就可以用Linux自带的Mail来发一封测试邮件:mail -s ‘I am Freehao123’ [email protected]  < /etc/imapd.conf

Postfix发送测试邮件

4、这是QQ邮箱收到了Postfix邮件系统发来的邮件。

Postfix收信

5、如果CentOS没有安装中文字体,会出现邮件乱码。

Postfix中文乱码

6、执行命令:cat /var/log/maillog  可以查看Postfix收发邮件记录。

Postfix查看邮件记录

七、为Postfix邮件系统安装SPF

1、执行以下命令给Postfix邮件系统安装SPF:


wget https://launchpad.net/postfix-policyd-spf-perl/trunk/release2.010/+download/postfix-policyd-spf-perl-2.010.tar.gz
perl -MCPAN -e 'install version'
perl -MCPAN -e 'install NetAddr::IP'
perl -MCPAN -e 'install Mail::SPF'
perl -MCPAN -e 'install Sys::Hostname::Long'
tar zxvf postfix-policyd-spf-perl-2.010.tar.gz
cd postfix-policyd-spf-perl-2.010
cp postfix-policyd-spf-perl /usr/libexec/postfix/policyd-spf-perl

Postfix安装SPF

2、如果出现错误,可能是Perl没有安装完整,执行以下命令安装:


wget https://cpan.communilink.net/authors/id/A/AN/ANDK/CPAN-1.9600.tar.gz
tar -zxvf CPAN-1.9600.tar.gz
cd CPAN-1.9600
perl Makefile.PL
make
make install

3、编辑SPF的配置文件:/etc/postfix/master.cf,加入以下内容


policy  unix  -       n       n       -       0       spawn
user=nobody argv=/usr/local/postfix/libexec/postfix-policyd-spf-perl

Postfix添加SPF记录

4、然后再编辑Poxtfix配置文件,添加以下内容(如果已经有了,去掉前面的注释号)。


smtpd_recipient_restrictions =reject_unauth_destination,check_policy_service unix:private/policy

5、最后重新载入 postfix 服务:postfix reload

八、postfix邮件系统小结

1、postfix邮件系统可以用来替代sendmail发送邮件,如果你不想使用Pop和Imap服务,可以只安装postfix,并将其设置为默认的发邮件服务,这样服务器在发邮件时就是通过postfix了。

Postfix使用POP3

2、postfix邮件系统配合maildorp、extmail、extman等就要可以搭建一个企业邮局了,如果再配合好SPF反垃圾邮件策略,就可以满足日常大量的邮件收发任务了,且供多人同时使用。

文章出自:免费资源部落 文章中部分代码参考blog.51yip.com博客。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

共有 77 条留言 访客:77 条 博主:0 条

  1. Hank  2016.12.20 回复

    我的网站是在linode vps 搭配 lnmp环境wordpress弄的,现在就是不懂怎么实现网页在contact us里面的表单发送,是要搭建一个邮件系统吗?

    qi 回复:

    @Hank, 不需要,直接使用SMTP发信即可。如果你想要一个表单的话,可以直接使用Wordpress插件:Contact Form 7,安装了这个插件后你就可实现contact us提交功能了。

  2. 叶子  2016.07.05 回复

    用这个安装遇到的问题:
    1.Cyrus-IMAP,Cyrus-sasl安装启动后 然后再安装Dovecot启动会出现端口占用情况。
    2.telnet xxx.com 25失败
    3.可以用mail。。。发送邮件 但是无法接收邮件
    4.麻烦介绍下 如何用foxmail之类的连接方式,

    本人小白,烦请介绍,谢谢!

    qi 回复:

    @叶子, Cyrus-IMAP,Cyrus-sasl只能是安装其中一个了。无法接收邮件看看是不是VPS防火墙阻止了。Postfix配置SMTP这里有一个非常详细的教程:https://www.linode.com/docs/email/postfix/postfix-smtp-debian7

    叶子 回复:

    @qi,
    1.需要说明的是Dovecot和Cyrus-IMAP,Cyrus-sasl只需要选择其中一项即可,否则会出现端口被占用无法启用的情况;
    2. Cyrus-IMAP,Cyrus-sasl只能是安装其中一个了
    我迷糊了。上面步骤说的是1 你回复的是2
    1的说法有点歧义,可以是3选1的理解或者是 Dovecot+后面2个的其中1个;
    2的说法好像又是Cyrus的2选1 那我们具体的该用什么组合?
    泪奔求解!!!

    qi 回复:

    @叶子, Cyrus-IMAP,Cyrus-sasl只需要安装其中一个,Dovecot是必需安装的。

  3. billy  2016.01.06 回复

    cyradm -u cyrus localhost –auth plain
    cm 用户名后,怎么知道用户密码?
    没有输入密码的地方,谢谢!

    qi 回复:

    @billy, 就是执行cyradm -u cyrus localhost 后设置的密码。

  4. 轻歌  2015.10.07 回复

    用了这个配置,发现即使启用了sasl验证,可以正常登陆发信,也可以直接telnet连接25端口不登录直接发信。这是个很严重的问题。

    qi 回复:

    @轻歌, 还有这样的问题?这样的话岂不是其它人也可以使用了?

    轻歌 回复:

    @qi, 是的,我已经为此折腾了一个下午,都找不到使postfix禁止匿名发信的方法

  5. 轻歌  2015.09.13 回复

    cyrus-sasl可以整合mysql管理虚拟用户,这样的话自己写用户系统就方便多了

    qi 回复:

    @轻歌, 这样确实可以。

  6. postmarkapp  2014.11.28 回复

    postmarkapp的

    qi 回复:

    @postmarkapp, 还在研究当中。

  7. postmarkapp  2014.11.28 回复

    恩 博主 我的设置方法呢

  8. postmarkapp  2014.11.28 回复

    😛 看着心动啊 博主 不知道有没有安装视频啊 求安装视频 😛

  9. 李阳博客  2014.11.19 回复

    是不是只安装postfix,就只能发送邮件,别人给我评论的就无法给我发邮件通知我了?

    qi 回复:

    @李阳博客, 不一定,评论通知也能用postfix,过程是一样的。

  10. Foooi-WordPress资源网  2014.11.02 回复

    留着备用,话说给[email protected]发邮件测试了没有?

  11. ki  2014.10.10 回复

    还有一个就是netstat -tpnl |grep smtpd这个命令的时候没反应。smtp死活连接不上。pop3 imap都能telnet上。25就是不行。是什么情况。麻烦qi大。。

  12. ki  2014.10.10 回复

    [[email protected]~]# perl -MCPAN -e ‘install version’
    Can’t locate object method “install” via package “version” at -e line 1.

    qida这是个什么错误啊。

  13. 四弦  2014.10.01 回复

    qi大,我安装好cyrus和postfix spf以后怎么做?
    我用outlook死活登陆不上
    还有cyrus邮件账号的默认密码是什么?
    各种登不上。。。。

    qi 回复:

    @四弦, 默认是自己设置的,也可以新增加账号和密码,登录不上是提示连接不上服务器,还是端口之类的报错?

    四弦 回复:

    @qi, 服务器拒绝用户名,拒绝登陆,mail box….
    invaild login… user command only……

    qi 回复:

    @四弦, 有可能还是邮件服务器配置不正确。重新配置一次看看。或者检查一下哪里出了差错。

  14. 我的论坛现在注册的人数越来愈多,想要做邮箱验证账号,但是使用126的smtp 总是每天发个100来封信 就没办法发送了! 很苦恼! 使用这个方法我试试先

  15. 外星人源码论坛  2014.09.03 回复

    我的论坛现在注册的人数越来愈多,想要做邮箱验证账号,但是使用126的smtp 总是每天发个100来封信 就没办法发送了! 很苦恼! 使用这个方法我试试先

  16. xiaoqiang  2014.08.24 回复

    确定能给qq发?我发给qq的邮件都被退信了

    qi 回复:

    @xiaoqiang, 添加好SPF会好一些。

  17. v998  2014.08.23 回复

    给个freehao123.info的邀请码来可以吗,十分感谢
    [email protected]

  18. 快乐家园  2014.08.22 回复

    再加上roundcube(web邮件)就完美了,完胜国内企业邮各种限制

    qi 回复:

    @快乐家园, roundcube是多台的吗?

    快乐家园 回复:

    @qi, roundcube是一个php的webmail,设好域名,imap和smtp地址就可以直接使用了,支持多用户。前提是要创建好用户

    Kung 回复:

    @快乐家园, 我觉得Roundcube的UI挺好看的。。

  19. musk100  2014.08.22 回复

    后排支持

  20. 猫箱内の巴托拉  2014.08.22 回复

    有机会就试试看

  21. wq  2014.08.22 回复

    没事折腾下!

  22. 破斧沉舟  2014.08.22 回复

    每日签到,签到时间:2:07:32 AM

  23. JACK  2014.08.22 回复

    话说写一篇关于 ovh 的

  24. JACK  2014.08.21 回复

    话说写一篇关于 ovh 的。。

  25. Less  2014.08.21 回复

    大神!
    不过发现一个问题。。
    文章里面出现了freehao123.com、freehao123.info和zhujis.com
    会有点小混乱~

  26. 不认识  2014.08.21 回复

    路过,打酱油。。。
    能上SSL更好,防窃听。
    改端口,防暴力破解。

  27. 山水白林  2014.08.21 回复

    论坛QQ登陆不了啊,从不记密码,然后忘记密码填了邮箱又发送不了 ➡

  28. 菜鸟了  2014.08.21 回复

    我现在正考虑用西部数码云主机还是阿里云,发现博主用的是西部数码,能给点意见吗?

  29. 闭眼  2014.08.21 回复

    qi大大 给个论坛邀请码。 😮

    qi 回复:

    @闭眼, 用这个:ja01bp

    ytf4425 回复:

    @qi, 同求

    qi 回复:

    @ytf4425, 用这个:yhn5mj

  30. ytf4425  2014.08.21 回复

    有些vps规定了不能乱发邮件的,比如每天超过X封就算不是垃圾邮件也要被暂停的

    ytf4425 回复:

    @ytf4425, 比如chicagovps,批量发送邮件要事先申请的

    qi 回复:

    @ytf4425, 这样的VPs,需要用到SMTP发信。

    ytf4425 回复:

    @qi, SMTP就不会被查了么?

    qi 回复:

    @ytf4425, SMTP用的别的服务器发信,所以VPS商不会管。

    涛 回复:

    @qi, 能加你一下QQ吗,帮忙指导一下邮件服务器的搭建

    qi 回复:

    @涛, 好的,加我QQ:798558110

  31. ytf4425  2014.08.21 回复

    所以我又是在后排= =

  32. AS  2014.08.20 回复

    虽然后排,还是要签到

  33. 超級efly  2014.08.20 回复

    今天簽到啦!時間:下午8:28:08~歡迎訪問AREFLY.COM~~ 😛

  34. 烟花易冷  2014.08.20 回复

    刚刚去续费了一个月VPS.,打算拿来玩玩..话说怎么接收邮件

    包子 回复:

    @烟花易冷, MX记录有了,收邮件就是

    qi 回复:

    @烟花易冷, 配置好了,就可以直接收了。

    mika 回复:

    @烟花易冷, 你网站进不去了是怎么回事?

  35. 吴尼玛  2014.08.20 回复

    lz
    你这些配图哪找的啊

  36. 余人陶艺  2014.08.20 回复

    虽然看不懂,但是到一定要签的

  37. liqiu  2014.08.20 回复

    用处对小博客来说不大

    qi 回复:

    @liqiu, 适合每天要发很多邮件的朋友,小流量的博客可以直接使用Postfix来替代PHP发邮件。

  38. Tammy  2014.08.20 回复

    好东西,学习了

  39. 吴尼玛  2014.08.20 回复

    矮油,又慢了。。。。。。。。。。。

  40. 没VPS的路过

  41. 不会网站  2014.08.20 回复

    这么前,有点小激动了

  42. Kung  2014.08.20 回复

    前排了。。这个有用啊。学习学习

  43. 洛克  2014.08.20 回复

    啦啦啦啦

    包子 回复:

    @洛克, 习惯在debian上使用 Exim4

    mika 回复:

    @洛克, 每次我收到邮件的时候都好慢,抢不到沙发啊

    洛克 回复:

    @mika, 我用的搜狗浏览器的消息盒子

    mika 回复:

    @洛克, 好吧,,,,可是楼主为什么不再啊啊啊啊啊

给我留言

返回顶部