Postfix 主配置文件:只允许本机发送邮件,不接收任何外部邮件
我想实现的功能是,它可以发送邮件,给外网的用户,,比如发送给我xxxxxxxxxxxxxx@163.com , 但是这个服务器不接收任何邮件。
下面是Postfix 具体配置。配置内容保存到 Postfix 的主配置文件中(一般为 /etc/postfix/main.cf),然后重启 Postfix 服务生效。
###############################################################################
# Postfix 主配置文件:只允许本机发送外部邮件,不接收任何外部邮件
###############################################################################
# 163 邮件服务器不支持 SMTPUTF8 扩展,禁止这个才能给163发邮件。
smtputf8_enable = no
# 显示在 SMTP 握手时的标识信息
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
# 关闭 biff 服务(即时邮件通知)
biff = no
# 不自动追加发件人地址的域名(由 MUA 自行处理)
append_dot_mydomain = no
# 禁止提供 readme 目录(安全考虑)
readme_directory = no
# 设置 Postfix 的兼容性级别(默认级别为 2)
compatibility_level = 2
###############################################################################
# TLS/SSL 参数配置(测试环境使用 snakeoil 证书,正式环境建议使用正规证书)
###############################################################################
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level = may
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
###############################################################################
# 中继限制设置
# 仅允许本机或经过认证的用户通过此服务器发送邮件,防止成为开放中继
###############################################################################
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
###############################################################################
# 主机名及发信域名设置
###############################################################################
# 设置邮件服务器的主机名(与 hostnamectl 显示一致)
myhostname = MY-HOST-NAME
# 发件域名使用 /etc/mailname 中的内容,也可直接指定域名,如:example.com
myorigin = /etc/mailname
###############################################################################
# 本地投递设置
# 为确保不接收外部邮件,将本地投递域限制为 localhost
###############################################################################
mydestination = localhost
###############################################################################
# 中转设置
# relayhost 为空表示 Postfix 直接通过 DNS 将邮件发送到目标邮件服务器
###############################################################################
relayhost =
###############################################################################
# 网络访问控制
# 只允许本机(127.0.0.0/8 和 IPv6 的 loopback 地址)通过此服务器发送邮件,
# 防止外部主机连接到该服务器提交邮件。
###############################################################################
mynetworks = 127.0.0.0/8, [::1]/128
###############################################################################
# 邮箱及邮件地址相关设置
###############################################################################
# 邮箱大小无限制(0 表示不限制)
mailbox_size_limit = 0
# 定义邮件地址中的分隔符(例如 user+tag@example.com)
recipient_delimiter = +
###############################################################################
# 接收服务设置
# 只在本机回环接口上监听 SMTP 服务,外部无法连接到该服务器接收邮件
###############################################################################
inet_interfaces = loopback-only
# 同时支持 IPv4 和 IPv6 协议
inet_protocols = all
重启邮件服务
sudo systemctl restart postfix
测试发送一份邮件给自己
echo "这是一封测试邮件,来自 Postfix 配置测试。" | mail -s "测试邮件" xxxxxxxx@163.com
观察日志
使用如下命令观察日志,确认邮件是否发送成功:
tail -f /var/log/mail.log