云上那些事: 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 中继访问被拒绝

如何使用带有 Postfix 的 AWS SES 接收退回的邮件

postfix+dovecot+foxmail

postfix+dovecot+foxmail

发送邮件那些事

邮件系统之postfix