说“快速”的原因,其实很简单,是因为直接使用 yum 安装而不是通过编译的方式。
说“安全”的原因,是我们需要实现 SSL的传输层加密。
网上各种介绍,各种版本其实都是各种坑,我的这个版本也不能免俗,因此特声明版本如下:
目前介绍的版本是截止写作日期,2018-2-21,农历正月初六, yum 上的最新版本。
Postfix: 2.10.1
cyrus-sasl: 2.1.26
dovecot: 2.2.10
本文不适用非 CentOS7 的操作系统,并且不适合采用编译方法安装 Postfix+Dovecot 的情形。
所有各种 DNS,iptables, SElinux 的设置, 所有和 Web, MySQL 相关的那些应用,均不在本文讨论之列。
如果你之前安装有 sendmail , 请用 # yum erase sendmail 删除软件包。
1. 安装所有软件包,各种 yum install.
# yum install postfix* cyrus-sasl* dovecot*
其实并不是所有的相关包都是需要安装的, 但是为了实现“快速”,我们就不去纠结是否需要安装那些八辈子都用不到的包了。 毕竟安装一个软件包本身不会引入安全问题。
2. 启动服务
# systemctl enable postfix dovecot
# systemctl start postfix dovecot -l
如果你看到绿色的 running,恭喜你,万里长征第一步成功了。
3. 配置 postfix
- 把下面的这段添加到 /etc/postfix/main.cf 里:
smtpd_helo_required = yes
smtpd_delay_reject = yessmtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = ”
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
broken_sasl_auth_clients=yes
smtpd_sasl_authenticated_header = yes
smtpd_client_restrictions = permit_sasl_authenticated
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
message_size_limit = 15728640smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/youdomain.pem
smtpd_tls_key_file = /etc/ssl/certs/yourdomain.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = SSLv3, TLSv1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom修改 myhostname, mydomain, 为你自己的邮件服务器主机名,以及你的邮件域名。
把 inet_interfaces 设置为: all.
把 mydestination 设置为: $myhostname, $mydomain
把 mynetworks_style 设置为: host
把 mynetworks 设置为: 127.0.0.0/8
把 home_mailbox 设置为: Maildir/
里面提到的证书文件怎么配置,后面再提。 - 把下面的这段添加到 /etc/postfix/master.cf 里:
smtps inet n – – – – smtpd -v
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=$mua_client_restrictions
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
-o smtpd_tls_auth_only=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject
-o smtpd_sasl_security_options=noanonymous,noplaintext
-o smtpd_sasl_tls_security_options=noanonymous
-o smtpd_helo_restrictions=$mua_helo_restrictions
-o smtpd_sender_restrictions=$mua_sender_restrictions
4. 配置 saslauthd,配置文件是:/etc/sysconfig/saslauthd,采用默认即可,所以这里啥也不用做。
5. 配置 dovecot,主配置文件是:/etc/dovecot/dovecot.conf,其实里面就两行文字,啥也不用改,因为里面各项具体的配置在 /etc/dovecotconf.d 目录下。
- 修改 10-auth.conf
disable_plaintext_auth = yes
auth_mechanisms = plain login - 修改 10-mail.conf
mail_location = maildir:~/Maildir - 修改 10-master.conf
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
如果需要跟详细的日志,可以修改 10-logging.conf 文件。
如果不出意外的话,用 # netstat -nat4|grep LIST 命令就应该可以看到如下的端口已经打开:
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN (POP3)
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN (IMAP)
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN (SMTPS)
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN (SMTP)
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN (POP3S)
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN (IMAPS)
为了安全起见,你一般只需要在防火墙上打开 IMAPS/POP3S/SMTPS。
这样, 一个支持 smtp authenticate,保证安全的邮件收发服务器就建成了,你也可以拥有自己的企业邮箱了。
邮箱的创建需要手工在 Linux 上添加用户。
如果你有幸看到本教程,哪些网上介绍的走明文密码传输协议的 IMAP/POP3/SMTP,你就基本上可以忽略了。
你或许会遇到 dovecot 证书出错的问题,这个问题可以通过下载 mkcert.sh
然后把其中的
SSLDIR 修改为:${SSLDIR-/etc/pki/dovecot}
再修改一下 /etc/pki/dovecot/dovecot-openssl.cnf 文件,然后运行一下 ./mkcert.sh 即可。
Postfix 的证书,我们需要手工创建,我的创建步骤很简单:
进入 /etc/ssl/certs,运行 make yourdomain.pem,会生成一个包含 key 和 证书 的 pem 文件,我把两部分分开成两个文件。
yourdomain.key(拷贝 pem 文件到 key,删除第二部分的证书) 和 yourdomain.pem(把 key 部分删除)
记得重启 postfix 和 dovecot 服务!