Linux 搭建 postfix 邮件服务器

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

QQ截图20190411131025.png

登录

b989f1f00d538ad1a7ad95a3ec88773b.png

QQ截图20190411131240.png

IMAP登录

先创建用户、密码,然后为用户设置SMTP认证密码

[root@mail ~]# saslpasswd2 -c -u `postconf -h mydomain` admin
Password: 
Again (for verification): 

QQ截图20190417114726.png

QQ截图20190417114752.png

大功告成

关于如何改善 发送出去的邮件被当垃圾邮件处理

Lomu-邮件服务器添加SPF、DKIM、DMARC、PTR提高送达率
常阳时光


参考博文

丁香花下
自由早晚乱余生
Lomu
kaijia

发表留言

人生在世,错别字在所难免,无需纠正。

icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif