postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件,是 sendmail 改良版,兼容 sendmail 性能比 sendmail 大约快3倍,最重要的是免费,很适合个人搭建邮件服务器
准备
环境
Centos7 64位 1核1G
DNS解析
主机记录 类型 线程 记录值
@ TXT 默认 v=spf1 a mx -all (反垃圾)
@ MX 默认 mail.t8.ee. (邮件服务器)
mail A 默认 97.64.111.246 (邮件域名)
开放端口
直接关闭防火墙或者开放端口
25(SMTP服务,用于发送邮件)
110(pop3服务,用于接收邮件)
143(imap服务,用于接收邮件)
如果用pop3服务,需要打开110和25端口即可,
如果使用了ssl
- pop3就需要开放我们的465(发件) 995(收件)端口
- imap就需要开放我们的465(发件) 993(收件)端口
firewall-cmd --add-port=25/tcp --permanent
firewall-cmd –add-port=110/tcp --permanent
firewall-cmd --reload
卸载sendmail
卸载无用的 sendmail (系统自带)
yum -y remove sendmail 或者 rpm -e sendmail
修改hostname
hostnamectl set-hostname mail.t8.ee
修改MTA
默认邮件传输代理,直接回车
alternatives --config mta
检查是否设置成功
第一行可以看到mta的状态。 例如:mat - status is manual
alternatives --display mta
安装
安装 postfix dovecot cyrus-sasl-*
yum -y install postfix dovecot cyrus-sasl-*
配置
配置postfix
vim /etc/postfix/main.cf
# 75行: 取消注释,设置hostname
myhostname = mail.t8.ee
# 83行: 取消注释,设置域名
mydomain = t8.ee
# 99行: 取消注释
myorigin = $mydomain
# 116行: 默认是localhost,我们需要修改成all
inet_interfaces = all
# 119行: 推荐ipv4,如果支持ipv6,则可以为all
inet_protocols = ipv4
# 164行: 添加
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 264行: 取消注释,指定内网和本地的IP地址范围
mynetworks = 127.0.0.0/8
# 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
#配置Postfix使用TLS加密全部数据传输(可选)
smtpd_tls_security_level = may
smtp_tls_security_level = may
其中smtpd_tls_security_level设置服务器接收邮件的TLS安全等级,而smtp_tls_security_level则是设置服务器发送邮件的TLS安全等级。此两个选项有三个共同的参数none、may和encrypt。none表示禁用TLS加密;may在SMTPD接收端表示向客户端通告服务器支持加密但允许客户端使用不加密方式传输邮件,在SMTP发送端表示如果服务器通告支持加密即使用加密方式发送邮件;encrypt表示强制要求加密。除了以上三个参数外,外发邮件时smtp_tls_security_level还有dane、dane-only、fingerprint、verify、secure几个不常用的参数。此处选择may最为合适,这样即使客户端或接收服务器不开启加密仍可以以未加密形式通信,避免由于对方服务器不支持加密而己方不支持不加密导致邮件无法投递。
配置dovecot
配置监听协议
vim /etc/dovecot/dovecot.conf
# 协议支持
protocols = imap pop3 lmtp
# 26行: 如果不使用IPv6,请修改为*
listen = *
#在主配置文件中的第48行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数
login_trusted_networks = 192.168.10.0/24
配置登录方式
vim /etc/dovecot/conf.d/10-auth.conf
# 9行: 取消注释并修改 disable_plaintext_auth = no
# 97行: 添加 auth_mechanisms = plain login
配置邮件存储位置
vim /etc/dovecot/conf.d/10-mail.conf
# 30行: 取消注释并添加 mail_location = maildir:~/Maildir
配置ssl(关闭)
vim /etc/dovecot/conf.d/10-ssl.conf
# 8行: 将ssl的值修改为 ssl = no
配置sasl2
配置系统认证
vim /etc/sysconfig/saslauthd
SOCKETDIR=/run/saslauthd
MECH=shadow
FLAGS=
配置登录方式(创建新文件)
vim /usr/lib64/sasl2/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
log_level:3
启动
启动 dovecot 、postfix、saslauthd
systemctl start dovecot
systemctl start postfix
systemctl start saslauthd
加入系统启动
systemctl enable dovecot
systemctl enable postfix
systemctl enable saslauthd
创建用户
#创建admin用户
useradd admin
#设置admin用户密码
passwd admin
收发邮件测试
POP3登录
- Linux
安装 telnet
yum -y install telnet
测试 端口
如果这两个端口都能拼通那就差不多了
telnet localhost 25
telnet localhost 110
- win
安装 foxmail
登录
IMAP登录
先创建用户、密码,然后为用户设置SMTP认证密码
[root@mail ~]# saslpasswd2 -c -u `postconf -h mydomain` admin
Password:
Again (for verification):
大功告成
关于如何改善 发送出去的邮件被当垃圾邮件处理
Lomu-邮件服务器添加SPF、DKIM、DMARC、PTR提高送达率
常阳时光
参考博文