继续阅读完整内容
支持我们的网站,请点击查看下方广告
第一部分:安装 Postfix
1. 安装 Postfix
# 更新软件包列表sudo apt update
# 安装 Postfix 和必要工具sudo apt install postfix mailutils libsasl2-modules sasl2-bin -y
2. 安装过程中的配置向导
安装过程中会出现配置对话框,按以下选择:
第一个对话框(配置类型):
选择配置类型:
-> 选择 "Internet Site"
第二个对话框(系统邮件名称):
邮件服务器的主机名:
-> 输入你的域名(如:yourdomain.com)
或直接按 Enter 使用系统主机名
3. 安装完成后检查
# 检查 Postfix 状态sudo systemctl status postfix
# 检查版本postconf -d | grep mail_version
第二部分:基本配置
1. 编辑主配置文件
sudo nano /etc/postfix/main.cf
2. 添加/修改以下配置
# ========== 基本设置 ==========# 服务器主机名(替换为你的域名)myhostname = mail.yourdomain.commydomain = yourdomain.com
# 接收哪些域名的邮件mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 监听所有网络接口inet_interfaces = all
# 协议版本inet_protocols = all
# ========== 网络设置 ==========# 允许哪些网络通过本服务器发送邮件mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24# 如果允许任意IP:mynetworks = 0.0.0.0/0
# ========== 邮件大小限制 ==========message_size_limit = 10485760 # 10MBmailbox_size_limit = 0 # 0表示不限制recipient_delimiter = +
# ========== 安全设置 ==========# 防止被用作垃圾邮件中继smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
# 允许中继(重要!)relayhost = smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
# ========== TLS/SSL 设置 ==========# 启用 TLSsmtpd_use_tls = yessmtp_use_tls = yes
# TLS 证书位置(先用自签名)smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pemsmtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
# 安全级别smtpd_tls_security_level = maysmtp_tls_security_level = maysmtpd_tls_auth_only = yes
# ========== 日志设置 ==========mailbox_command = procmail -a "$EXTENSION"mailbox_size_limit = 0recipient_delimiter = +inet_interfaces = all
3. 配置 master.cf 启用所有端口
sudo nano /etc/postfix/master.cf
确保以下行没有被注释(去掉行首的 #):
# ========== 标准 SMTP (端口25) ==========
smtp inet n - y - - smtpd
# ========== SMTP Submission (端口587) ==========
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
# ========== SMTPS (端口465) ==========
smtps inet n - y - - smtpd
-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=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
第三部分:配置身份验证(SASL)
1. 配置 SASL
# 创建 SASL 配置目录和文件sudo mkdir -p /etc/postfix/saslsudo nano /etc/postfix/sasl/smtpd.conf
添加以下内容:pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
log_level: 3
saslauthd_path: /var/spool/postfix/var/run/saslauthd/mux
2. 配置 SASL 认证
# 编辑 Postfix 配置sudo postconf -e "smtpd_sasl_auth_enable = yes"sudo postconf -e "smtpd_sasl_security_options = noanonymous"sudo postconf -e "smtpd_sasl_local_domain ="sudo postconf -e "broken_sasl_auth_clients = yes"sudo postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination"
3. 创建系统用户用于认证
# 添加用户(用于 SMTP 认证)sudo adduser postfixuser# 设置密码sudo passwd postfixuser
# 测试 SASL 认证sudo testsaslauthd -u postfixuser -p 'yourpassword'
第四部分:生成 SSL 证书
1. 生成自签名证书
# 生成证书sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \-keyout /etc/ssl/private/postfix.key \-out /etc/ssl/certs/postfix.crt \-subj "/C=CN/ST=State/L=City/O=Organization/CN=mail.yourdomain.com"
# 设置权限sudo chmod 600 /etc/ssl/private/postfix.keysudo chmod 644 /etc/ssl/certs/postfix.crt
2. 更新 Postfix 使用新证书
sudo postconf -e "smtpd_tls_cert_file = /etc/ssl/certs/postfix.crt"sudo postconf -e "smtpd_tls_key_file = /etc/ssl/private/postfix.key"
第五部分:防火墙配置
1. 开放必要的端口
# 如果使用 ufwsudo ufw allow 25/tcpsudo ufw allow 465/tcpsudo ufw allow 587/tcpsudo ufw reload
# 如果使用 iptablessudo iptables -A INPUT -p tcp --dport 25 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 465 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 587 -j ACCEPTsudo iptables-save > /etc/iptables/rules.v4
第六部分:重启和测试
1. 重启服务
# 重启 Postfixsudo systemctl restart postfixsudo systemctl enable postfix
# 启动 SASL 服务sudo systemctl restart saslauthdsudo systemctl enable saslauthd
2. 检查服务状态
# 检查 Postfixsudo systemctl status postfix
# 检查监听端口sudo netstat -tulpn | grep :25sudo netstat -tulpn | grep :465sudo netstat -tulpn | grep :587
# 或使用 ss 命令ss -tulpn | grep postfix
3. 测试邮件发送
# 方法1:使用 mail 命令echo "This is a test email from Postfix" | mail -s "Test Email"
# 方法2:使用 telnet 测试 SMTPtelnet localhost 25
输入以下命令(逐行输入):
HELO localhostMAIL FROM: <RCPT TO: <DATASubject: Test Email from Postfix
This is a test email..QUIT
4. 测试加密连接
# 测试端口 465 (SMTPS)openssl s_client -connect localhost:465 -quiet
# 测试端口 587 (STARTTLS)openssl s_client -starttls smtp -connect localhost:587