linux下postfix配置smtp服务

系统一般都自带了postfix,保险起见,安装下

yum -y install postfix

安装sasldb、saslauthd

#提供smtp的虚拟账户和密码服务 sasldb2包含在saslauthd当中yum -y install cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain  cyrus-sasl-devel#当前mta查看alternatives --display mta#设置mtaalternatives --set mta /usr/sbin/sendmail.postfix#再次查看mtaalternatives --display mta#输出结果最后一行会有类似如下的提示:mta即设置完毕#Current `best' version is /usr/sbin/sendmail.postfix.

postfix开机启动设置,因为采用sasldb2提供postfix的smtp账户和密码,无需saslauthd服务运行,故而saslauthd服务不用启动—看吧,使用sasldb2还减少资源占用:

systemctl enable postfix

postfix配置文件在/etc/postfix目录下,主要修改的配置文件为:/etc/postfix/main.cf,配置说明详见代码段:

vi /etc/postfix/main.cf #vi编辑postfix配置文件#找到如下配置项酌情修改#######postfix主机名,修改成你的域名 此项需要添加A记录并指向postfix所在主机公网IPmyhostname = mail.jjonline.com.cn#域名mydomain = jjonline.com.cn#本机postfix的邮箱域名后最 此项默认值使用myhostname#此处使用了前项mydomain 也就是说本机postfix邮箱后缀为:@jjonline.com.cnmyorigin = $mydomain#指定postfix系统监听的网络接口 此处必须是localhost或127.0.0.1或内网ip#若注释或填入公网ip 服务器的25端口将对公网开放#默认值为all 即监听所有网络接口inet_interfaces = all#网络协议 这里ipv4即可inet_protocols = ipv4#指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。#此项配置中$myhostname表示postfix接受@$myhostname为后缀的邮箱的邮件 逗号分割支持指多项#此项默认值使用myhostnamemydestination = $mydomain, localhost.$mydomain, localhost#此项制定接收邮件的规则 可以是hash文件 此项对本次配置无意义 可以直接注释local_recipient_maps =#指定你所在的网络的网络地址mynetworks = 42.121.107.189, 10.200.9.xxx, 127.0.0.1#请依据实际情况修改#指定MUA通过smtp连接postfix时返回的header头信息#原始配置附带有postfix版本号 去掉即可,此项酌情处理,可以先不管smtpd_banner = JJonline.Cn ESMTP Server下面的配置默认是没有的,需要在配置文件最后加上#SMTP Config#指定postfix兼容MUA使用不规则的smtp协议--主要针对老版本的outlook 此项对于本次配置无意义broken_sasl_auth_clients = yes#指定可以向postfix发起SMTP连接的客户端的主机名或ip地址smtpd_client_restrictions = permit_sasl_authenticated#此处permit_sasl_authenticated意思是允许通过sasl认证(也就是smtp链接时通过了账号、密码效验的用户)的所有用户smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, #发件人在执行RCPT TO命令时提供的地址进行限制规则 此处照搬复制即可reject_unauth_destination#指定postfix使用sasl验证 通俗的将就是启用smtp并要求进行账号、密码效验smtpd_sasl_auth_enable = yes#指定SMTP认证的本地域名 本次配置可以使用 smtpd_sasl_local_domain = '' 或干脆注释掉 默认为空smtpd_sasl_local_domain = $mydomain#取消smtp的匿名登录 此项默认值为noanonymous smtp若能匿名登录危害非常大 此项请务必指定为noanonymoussmtpd_sasl_security_options = noanonymous#指定通过postfix发送邮件的体积大小 此处表示5Mmessage_size_limit = 5242880######

查看postfix配置文件的所有配置项:

postconf #不带任何命令参数 即可输出所有postfix配置项以及默认值

五、sasldb2建立smtp用户和密码

某种意义上来讲:smtp的账户密码建立也就是建立邮箱账户(类似jjonline@jjonline.cn的邮箱地址)。

#配置postfix启用sasldb2作为smtp的账号秘密效验方式#编辑通过sasl启用smtp账号密码效验的配置vi /etc/sasl2/smtpd.conf #vi写入或编辑内容如下:#####pwcheck_method: auxpropauxprop_plugin: sasldbmech_list: plain login CRAM-MD5 DIGEST-MD5######这里需要注意的是:这个配置文件的位置是64位机器上的,32位机器应该在:/usr/lib/sasl2/smtpd.conf#创建smtp账号saslpasswd2 -c -u `postconf -h mydomain` test #回车会要求输入密码,连续两次#表示创建test@$mydomain的邮箱账号(也是smtp的账号)和密码#本例就是创建test@jjonline.com.cn账号和密码#此处注意的是smtp登录用的账号并不是单纯的用户名 而是整个邮箱地址字符串#假设此处设置的smtp账号test@jjonline.com.cn密码为test123 下方测试时要用到#查看sasldb2的用户和密码sasldblistusers2#此命令进用户查看sasldb的用户情况#此命令回车后会输出诸如这样的内容:test@jjonline.com.cn: userPassword#每次添加smtp用户完毕之后需重启postfix或reload

测试postfix配置文件并启动postfix

#没有问题的话会返回着色[ok]字样#启动postfixsystemctl restart postfix #更改sasldb2数据的权限,让postfix可以读取chmod 755 /etc/sasldb2

六、测试smtp

http://tool.chinaz.com/Tools/Base64.aspx 这个网站可以直接base64加密

telnet测试时需要用到,账号和密码都需要添加加密的字符串

我是直接在windows上操作的

telnet 192.168.2.182 25#输入auth login 进行登录操作auth login334 VXN1cm5hbWU6 #会显示出这个#输入账号为base64的加密字符串dGVzdEBqdW1wc2VydmVyLmNvbQ==#输入密码为base64的加密字符串0dGVzdDEyMw==235 2.7.0 Authentication seccessful  #认证成功后出来的东西

如果失败先查看日志 /var/log/maillog 大概知道是哪步没操作

自此,自建postfix并启用smtp和smtp的虚拟账号完成;

七、域名解析记录设置

postfix配置完毕,想要通过这台postfis邮件服务器发送的邮件被其他邮箱服务商所接受,还需要做A记录、txt记录还mx记录,请适配你自己的域名和ip地址。

postfix用客户端外发游戏出现Relay access denied,拒绝发信

解决办法:

编辑/etc/postfix/main.cn,找到

smtpd_recipient_restrictions=permit_sasl_authenticated, 
    permit_mynetworks, 
    reject_unauth_destination,

修改成

smtpd_recipient_restrictions = permit_sasl_authenticated, 
        permit_mynetworks, 
        reject_unauth_destination,
	reject_non_fqdn_sender,
        reject_non_fqdn_recipient, 
        reject_unknown_recipient_domain

发表评论

电子邮件地址不会被公开。 必填项已用*标注