云上那些事: postfix 使用中继模式发送邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云上那些事: postfix 使用中继模式发送邮件相关的知识,希望对你有一定的参考价值。
参考技术A 背景:由于安全因素,阿里云会封掉25port, 这导致我们自建的监控系统无法发送邮件,因为是轻量型应用,申请解封失败,遂按照推荐的方式采用了465 port 和relay的模式进行告警邮件的发送
组件构成:
一个main,cf
一个master.cf
一个sasl_password 和生成的sasl_password.db
一个generic 和生成的generic.db文件
步骤:
由于我们使用的是ubuntu18.04,所以此处以此为例:
#安装postfix
apt upgrade
apt install postfix ,选择 Internet Site ( 如果安装了sendmail 请将其停止或者卸载)
#添加465端口发信
vim /etc/postfix/master,cf
添加 smtps inet n - - - - smtpd
解除注释: -o smtpd_tls_wrappermode=yes
!wq 保存退出
vim /etc/services
添加 smtps 465/tcp mail2
smtps 465/udp mail2
#创建相关授权文件及虚拟映射文件
vim /etc/postfix/sasl_passwd
[smtp.163.com]:465 username@163.com:授权码
!wq 保存退出
postmap /etc/postfix/sasl_passwd 生成sasl_passwd.db 文件
vim /etc/postfix/generic
root@monitor username@163.com (#要和上面文件内的一样)
!wq 保存退出
postmap /etc/postfix/generic 生成generic.db 文件
#编辑主配置文件
vim /etc/postfix/main.cf
新增如下:
smtp_sasl_auth_enable = yes
#smtp_sasl_type = cyrus
smtp_sasl_security_options=noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_security_level = encrypt
smtp_tls_wrappermode = yes
smtp_generic_maps = hash:/etc/postfix/generic
修改如下:
inet_protocols = ipv4
#重启服务
systemctl restart postfix
测试发送,如有问题请检查log
主要报错:
1
status=deferred (delivery temporarily suspended: lost connection with smtp.163.com[220.181.12.12] while receiving the initial server greeting)
要配置relay 模式
2:
status=deferred (SASL authentication failed; cannot authenticate to server smtp.163.com[220.181.12.17]: no mechanism available)
修改/etc/postfix/main.cf
smtp_sasl_security_options=noanonymous
3:
status=bounced (host smtp.163.com[220.181.12.16] said: 553 Mail from must equal authorized user (in reply to MAIL FROM command))
修改 /etc/postfix/generic 把主机名和邮箱名字修复正确。
4
postfix/smtp[3218]: SMTPS wrappermode (TCP port 465) requires setting "smtp_tls_wrappermode = yes", and "smtp_tls_security_level = encrypt" (or stronger)
按照报错提示在主文件添加相关配置项
参考资料: https://itlaws.cn/post/postfix-use-external-smtp/
postfix+dovecot+foxmail
对于上网的每个人来说,发送,接收邮件是一个基本的要求。但是对于那些需要做网络产品推广和新闻消息推送的用户来说,普通邮箱就不能满足要求了,因为如果发送的邮件量很大的时候,发送邮件的数量就会被限制了。具体大家可以看这篇报道各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况。
简单的说就是:如果做网络产品推广和新闻消息推送,发送的邮件量非常大的话,一般的建议是搭建自己的邮局服务器,或者是花钱购买专业的邮件群发服务,免费邮箱的SMTP适合少量的邮件群发需求。
目前提供邮件发送的服务商,大概有这些:SendGrid、MailChimp、Amazon SES、SendCloud、Mailgun等等,但是使用这些第三方的邮件服务器,都是使用的共享IP,如果发送频率过高一样会造成对方接收不到邮件。各家的独立IP价格,一般都是二十几甚至四十几美刀一个月,这样一来,就不如买台VPS自己搭建邮件服务系统。
因此,此教程帮助大家在VPS上,搭建个人的,或者公司使用的邮件服务系统。
教程如下:
购买的VPS服务器信息:
VPS, Centos 6.5 , 32位,1G内存
VPS服务商参考:
Conoha:https://www.conoha.jp/zh/ ;
Z.com: https://cloud.z.com/sg/zh/?mode=logout
使用工具
1.Postfix
2.Dovecot
3.Foxmail客户端
4.一个可用的域名
一、安装过程
1.安装Postfix
rpm -e sendmail //有些VPS需要删除自带的sendmail
yum remove sendmail //有些VPS需要删除自带的sendmail
yum install -y postfix
修改MTA(默认邮件传输代理)
alternatives --config mta
直接Enter回车即可。
查看是否设置成功
alternatives --display mta
第一行可以看到mta的状态。 例如:mat – status is manual.
2.安装Dovecot
yum install dovecot -y
二、安装完成后,接下来是配置教程
1.配置Postfix
编辑/etc/postfix/main.cf,可以下载下来修改,也可以使用vim进行编辑:
yum install -y vim
vim /etc/postfix/main.cf
修改如下:
# 75行: 取消注释,设置
hostnamemyhostname = mail.nbu431.com
# 83行: 取消注释,设置域名
mydomain = nbu431.com
# 99行: 取消注释
myorigin = $mydomain
# 116行: 修改
inet_interfaces = al
l# 119行: 推荐ipv4,如果支持ipv6,则可以为all
inet_protocols = ipv4
# 164行: 添加
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 264行: 取消注释,指定内网和本地的IP地址范围
mynetworks = 127.0.0.0/8, 10.0.0.0/24
# 419行: 取消注释,邮件保存目录
home_mailbox = Maildir/
# 571行: 添加
smtpd_banner = $myhostname ESMTP
# 添加到最后
# 规定邮件最大尺寸为10M
message_size_limit = 10485760
# 规定收件箱最大容量为1G
mailbox_size_limit = 1073741824
# SMTP认证
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions=permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
修改好了之后使用/etc/rc.d/init.d/postfix start开启postfix,使用chkconfig postfix on将postfix开机启动。
2.配置Dovecot
修改如下:
[[email protected] ~]# vim /etc/dovecot/dovecot.conf
# 26行: 如果不使用IPv6,请修改为*
listen = *
[[email protected] ~]# vim /etc/dovecot/conf.d/10-auth.conf
# 9行: 取消注释并修改
disable_plaintext_auth = no
# 97行: 添加
auth_mechanisms = plain login
[[email protected] ~]# vim /etc/dovecot/conf.d/10-mail.conf
# 30行: 取消注释并添加
mail_location = maildir:~/Maildir
[[email protected] ~]# vim /etc/dovecot/conf.d/10-master.conf
# 88-90行: 取消注释并添加
# Postfix smtp验证
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
[[email protected] ~]# /etc/rc.d/init.d/dovecot start
Starting Dovecot Imap: [ OK ]
[[email protected] ~]# chkconfig dovecot on
到这里,我们的邮件服务器就已经搭建成功了。
三、域名解析
搭建完成后还需要进行域名解析。
添加一个子域名mail,A记录解析到服务器IP。
再添加一个MX记录,主机记录为空,记录值为上面解析的二级域名mail.nbu431.com,优先级10。
注意:解析生效可能需要一段时间。
四、邮箱客户端使用教程
一切都弄好以后,就可以使用Foxmail等第三方软件来收发邮件了。
在这里需要说一下,VPS的系统用户就是邮件的用户:
例如root,它既是VPS的管理员用户,同时也是我们搭建的邮箱用户,作为邮箱用户,它的账号是:[email protected],邮箱密码就是vps的root登录密码。
这里我们一般添加一个邮箱的管理员用户,添加过程如下:
#创建一个用户
useradd admin
#设置密码,会要求输入两次密码
passwd admin
接下来是下载登录Foxmail
1>.下载Foxmail
2>.安装过程很简单,安装完成后登录Foxmail
点击创建,进入登录设置:这里需要注意,邮件账号是admin,并不是邮箱,另外我们没有配置SSL,所以也不要勾选。 接下来点击创建,如果一切正常的话,你已经成功了。
**到这里,你就可以使用客户端愉快的群发邮件了,速度很快,支持批量邮箱地址导入,即便是.txt的邮箱地址,稍作编辑也可以批量导入!另外,
后记说明
posfix使用方法
/etc/rc.d/init.d/postfix start/stop/status/restart
Dovecot使用方法
/etc/rc.d/init.d/dovecot start/stop/status/restart
服务端日志目录:
cat /var/log/maillog
另外:
大家可以尝试在服务器安装pflogsumm,用来管理邮件非常方便。安装教程网上很多,大家搜索一下安装即可。
pflogsumm功能如下
统计今天的信息
pflogsumm -d today /var/log/maillog
统计昨天的信息
pflogsumm -d yesterday /var/log/maillog
使用定时任务生成昨天报告
1 0 * * * /usr/sbin/pflogsumm -d yesterday /var/log/maillog 2>&1 | mail -s “daily mail stats” [email protected]
使用定时任务生成上周的报告
1 0 * * * /usr/sbin/pflogsumm /var/log/maillog.1 2>&1 | mail -s “weekly mail stats” [email protected]
本文出自 “11028104” 博客,转载请与作者联系!
以上是关于云上那些事: postfix 使用中继模式发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
Linux postfix/dovecot 554 中继访问被拒绝