首页 > 代码库 > CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP在第三方上边使用发送邮件
CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP在第三方上边使用发送邮件
一前言
本来使用qq邮箱发送邮件,然后借助sendEmail来发送邮件告警,但是有每天的200封限制,很是不爽,于是想到来自己搭建邮件服务器来解决这个问题,关于使用sendEmail来借助qq邮箱来发送邮件详见http://www.cnblogs.com/Dicky-Zhang/p/5982973.html,在做这个之前,在网上查找了很多资料,发现很是混乱,不成一体,拼拼凑凑,根本无法使用,所以记录下来,方便后来人使用。
在做postfix之前,我成功搭建了iredmail,一个强大的开源系统。稍后会另外一篇文章来写下过程,供大家参考。
说明下
关于阿里云做邮件系统的问题,阿里云对25端口做了限制,即使你做好了,在第三方服务器上可能都无法使用,在本机上我做好了,都无法使用。对于青云系统,默认是没有对外开放25端口,这里的对外开放不是服务器里面,你需要在后台去开放25端口,不然你在外部服务器去连接这台做好的服务器的时候会提示超时,对于国外的服务器我倒是没测试,我认为应该不会做限制。好了,不多说了,开始正题
解释几个名词
- MUA:用户代理端,即用户使用的写信、收信客户端软件。比如:outlook、foxmail等客户端软件,乃至通过浏览器登录邮箱并发送邮件的BS架构网页也算是MUA。
- MTA:邮件传送端,即常说的邮件服务器,用于转发、收取用户邮件。本文之中的postfix实现的就是MTA,当然postfix也是一种特殊的MUA,不再深入介绍,本文之中仅把postfix当做MTA使用。
- MDA:邮件代理端,相当于MUA和MTA的中间人,可用于过滤垃圾邮件。
- POP:邮局协议,当前是第三版,也就是POP3,用于MUA连接服务器收取用户邮件,通信端口110。
- IMAP:互联网应用协议,功能与POP类似:也用于MUA连接服务器收取用户邮件;功能较POP多,通信端口143。
- SMTP:简单邮件传送协议,MUA连接MTA或MTA连接MTA发送邮件使用此协议,通信端口25,启用ssl/tls的情况下端口为465或587。
一般发邮件的步骤流程是:
1、MUA通过POP、IMAP或SMTP协议连接MTA(称之为mta1);本文之中php通过phpmailer请求发送邮件的php脚本就扮演了MUA的角色,而postfix就是MTA;
2、MUA发送邮件给mta1(或者说MUA通过mta1发送邮件);本文中postfix就是这个mta1;
3、mta1与其他的MTA自主沟通连接将邮件传送至指定域下的指定用户(此时mta1就扮演了MUA的角色功能,这种交互是由邮件系统软件自主实现,与用户端无关)。
本次搭建postfix目的很明确:
- 用于php开发的web环境下新用户注册时发送验证码邮件---php下通过phpmailer类库的smtp协议链接postfix来发送邮件。
- web环境与postfix在同一台CentOs6.5(64位)系统下,postfix不对外提供smtp亦不转发外部MUA邮件,仅转发(或发送)web环境下(MUA)的邮件,也就是仅转发本机(或者说本域)邮件。同时也不接收其他MTA的邮件(也就是说不接受他人发过来的邮件)。
- 本文就不介绍postfix、sasldb2、saslauthd等软件了,网上一大把
二 postfix的安装
1 yum remove sendmail #卸载sendmail 2 yum remmove postfix #卸载postfix 3 yum install postfix #重新安装postfix 4 #yum安装会自动建立postfix用户组和用户名 5 yum install crontabs #因为卸载postfix的时候系统定时服务也被卸载 核心服务 也同步安装
使用sasldb、saslauthd来生成smtp虚拟账号
安装
1 yum install cyrus-sasl* #提供smtp的虚拟账户和密码服务 2 #sasldb2包含在saslauthd当中 就不要再问为什么没有安装sasldb2的shell代码了 3 #当前mta查看 4 alternatives --display mta 5 #设置mta 6 /usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix 7 #再次查看mta 8 alternatives --display mta 9 #输出结果最后一行会有类似如下的提示:mta即设置完毕 10 #Current `best‘ version is /usr/sbin/sendmail.postfix.
postfix开机启动设置,因为采用sasldb2提供postfix的smtp账户和密码,无需saslauthd服务运行,故而saslauthd服务不用启动,使用sasldb2还减少资源占用:
1 chkconfig postfix on
三 postfix配置并启用smtp
postfix配置文件在/etc/postfix目录下,主要修改的配置文件为:/etc/postfix/main.cf,配置说明详见代码段
1 vi /etc/postfix/main.cf #vi编辑postfix配置文件 2 #找到如下配置项酌情修改 3 ###### 4 myhostname = mail.xxx.com.cn 5 #postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IP 6 mydomain = xxx.com.cn 7 #域名 8 myorigin = $mydomain 9 #本机postfix的邮箱域名后最 此项默认值使用myhostname 10 #此处使用了前项mydomain 也就是说本机postfix邮箱后缀为:@jjonline.com.cn 11 inet_interfaces = localhost 12 #指定postfix系统监听的网络接口 此处必须是localhost或127.0.0.1或内网ip 13 #若注释或填入公网ip 服务器的25端口将对公网开放 14 #默认值为all 即监听所有网络接口 15 #此项指定localhost后 本机postfix就只能发邮件不能接收邮件 16 inet_protocols = ipv4 17 #网络协议 ipv6在国内还不怎么普及 这里ipv4即可 18 mydestination = $myhostname, localhost.$mydomain, localhost 19 #指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。 20 #此项配置中$myhostname表示postfix接受@$myhostname为后缀的邮箱的邮件 逗号分割支持指多项 21 #此项默认值使用myhostname 22 local_recipient_maps = 23 #此项制定接收邮件的规则 可以是hash文件 此项对本次配置无意义 可以直接注释 24 mynetworks = 42.121.107.189, 10.200.9.xxx, 127.0.0.1 25 #指定你所在的网络的网络地址 26 #鄙人生产服务器公网IP42.121.107.189、内网ip10.200.9.xxx(第四位做了隐藏)、以及localhost的ip127.0.0.1 27 #请依据实际情况修改 28 smtpd_banner = JJonline.Cn ESMTP Server 29 #指定MUA通过smtp连接postfix时返回的header头信息 30 #原始配置附带有postfix版本号 去掉即可,此项酌情处理 31 #SMTP Config 32 broken_sasl_auth_clients = yes 33 #指定postfix兼容MUA使用不规则的smtp协议--主要针对老版本的outlook 此项对于本次配置无意义 34 smtpd_client_restrictions = permit_sasl_authenticated 35 #指定可以向postfix发起SMTP连接的客户端的主机名或ip地址 36 #此处permit_sasl_authenticated意思是允许通过sasl认证(也就是smtp链接时通过了账号、密码效验的用户)的所有用户 37 smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination 38 #发件人在执行RCPT TO命令时提供的地址进行限制规则 此处照搬复制即可 39 smtpd_sasl_auth_enable = yes 40 #指定postfix使用sasl验证 通俗的将就是启用smtp并要求进行账号、密码效验 41 smtpd_sasl_local_domain = $mydomain 42 #指定SMTP认证的本地域名 本次配置可以使用 smtpd_sasl_local_domain = ‘‘ 或干脆注释掉 默认为空 43 smtpd_sasl_security_options = noanonymous 44 #取消smtp的匿名登录 此项默认值为noanonymous smtp若能匿名登录危害非常大 此项请务必指定为noanonymous 45 message_size_limit = 5242880 46 #指定通过postfix发送邮件的体积大小 此处表示5M 47 ######
查看postfix配置文件的所有配置项:
1 postconf #不带任何命令参数 即可输出所有postfix配置项以及默认值
postconf #不带任何命令参数 即可输出所有postfix配置项以及默认值
四sasldb2建立smtp用户和密码
某种意义上来讲:smtp的账户密码建立也就是建立邮箱账户
CentOS6.5_64位系统下安装配置postfix邮件系统 启用并配置SMTP在第三方上边使用发送邮件