1.3. SMTP验证
SMTP-AUTH 允许客户端通过身份验证机制 (SASL) 识别自己。 应该使用传输层安全 (TLS) 来加密身份验证过程。 一旦通过身份验证,SMTP 服务器将允许客户端中继邮件。
1. 使用 SASL (Dovecot SASL) 为 SMTP-AUTH 配置 Postfix:
须藤 postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth' sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous' sudo postconf -e 'broken_sasl_auth_clients = yes'
须藤 postconf -e 'smtpd_sasl_auth_enable = yes' 须藤 postconf -e 'smtpd_recipient_restrictions = \
permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
这个 smtpd_sasl_路径 配置是相对于 Postfix 队列目录的路径。
2. 接下来,生成或获取 TLS 的数字证书。 请参见第 5 节“证书”[p. 198] 了解详情。 此示例还使用证书颁发机构 (CA)。 有关生成 CA 证书的信息,请参阅第 5.5 节“证书颁发机构”[p. 200]。 XNUMX]。
通过 TLS 连接到您的邮件服务器的 MUA 需要识别用于 TLS 的证书。 这可以使用来自商业 CA 的证书或使用用户手动安装/接受的自签名证书来完成。 对于 MTA 到 MTA TLS 证书,未经受影响组织的事先同意,绝不会进行验证。 对于 MTA 到 MTA TLS,除非本地策略要求,否则没有理由不使用自签名证书。 请参阅第 5.3 节 “创建自签名证书” [p. 200] 了解更多详情。
3. 获得证书后,配置 Postfix 为传入和传出邮件提供 TLS 加密:
sudo postconf -e 'smtp_tls_security_level = may' sudo postconf -e 'smtpd_tls_security_level = may'
须藤 postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/server.key' sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/server.crt' sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes' sudo postconf -e 'myhostname = mail.example.com'
4. 如果您使用自己的 证书颁发机构 要签署证书,请输入:
须藤 postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
同样,有关证书的更多详细信息,请参见第 5 节“证书”[p. 198]。
运行完所有命令后,为 SMTP-AUTH 配置了 Postfix,并为 TLS 加密创建了一个自签名证书。
现在,文件 /etc/postfix/main.cf 应该看起来像这样:
# 查看/usr/share/postfix/main.cf.dist 的注释,更完整
# 版本
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no
# 附加 .domain 是 MUA 的工作。 append_dot_mydomain = 否
# 取消注释下一行以生成“延迟邮件”警告
#delay_warning_time = 4 小时
myhostname = server1.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname
mydestination = server1.example.com, localhost.example.com, localhost 中继主机 =
我的网络 = 127.0.0.0/8
邮箱命令 = procmail -a "$EXTENSION" 邮箱大小限制 = 0
收件人分隔符 = + inet_interfaces = 所有 smtpd_sasl_local_domain = smtpd_sasl_auth_enable = 是
smtpd_sasl_security_options = 没有匿名的broken_sasl_auth_clients = 是smtpd_recipient_restrictions =
permit_sasl_authenticated,permit_mynetworks,reject _unauth_destination smtpd_tls_auth_only = no
smtp_tls_security_level =可以smtpd_tls_security_level =可以smtp_tls_note_starttls_offer =是smtpd_tls_key_file = /etc/ssl/private/smtpd.key smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header =是 smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom
postfix初始配置完成。 运行以下命令重新启动 postfix 守护进程:
须藤 systemctl 重启 postfix.service
Postfix 支持 RFC2554 中定义的 SMTP-AUTH1. 它基于 SASL2. 但是,在使用 SMTP-AUTH 之前,仍然需要设置 SASL 身份验证。