1.添加MX解析
2.添加txt解析记录
3.生成并配置DKIM记录
在服务器生成DKIM密钥
openssl genrsa -out dkim_private.key 1024
openssl rsa -in dkim_private.key -pubout -out dkim_public.key
提取公钥
添加DKIM的TXT记录
记录类型:TXT
主机名:default._domainkey.yourdomain.com
值:"v=DKIM1; k=rsa; p=你的公钥内容"
4.设置DMARC记录
p=none
:不拦截任何邮件,仅生成报告。sp=none
:子域名继承主域名策略。adkim=r
和aspf=r
:宽松对齐模式(允许发件人域名与根域名部分匹配)。
5.安装邮件服务器
5.1 安装必要软件
sudo yum install postfix dovecot dovecot-mysql openssl certbot -y
5.2 启动并设置自动重启
sudo systemctl enable postfix dovecot
sudo systemctl start postfix dovecot
5.3 配置postfix SMTP 服务器
5.3.1 修改主配置文件 /etc/postfix/main.cf
# 基础配置
myhostname = mail.yourdomain.com # 替换为你的域名
mydomain = yourdomain.com # 替换为你的父域名
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
# 邮箱存储路径
home_mailbox = Maildir/
mailbox_command =
# 网络配置
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, 发件域名
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 # 允许本地和Java后端所在网络的IP
# TLS加密
smtpd_tls_cert_file = /etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
# SASL认证(与Dovecot集成)
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth # /var/spool/postfix/private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
# 客户端提交邮件配置
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
5.3.2 重启 Postfix
sudo systemctl restart postfix
5.3.3 开放 25 465 587
5.4 配置 Dovecot (IMAP/POP3)
5.4.1 修改配置文件 /etc/dovecot/dovecot.conf
# 添加
# 启用协议
protocols = imap pop3
# 邮箱存储路径
mail_location = maildir:~/Maildir
# 认证配置
auth_mechanisms = plain login
5.4.2 修改配置文件 /etc/dovecot/conf.d/10-auth.conf
# 添加
passdb {
driver = passwd-file
args = /etc/dovecot/users scheme=SHA512-CRYPT username_format=%u
}
userdb {
driver = passwd-file
args = username_format=%u /etc/dovecot/users
}
5.4.3 配置 SSL 加密 /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
5.4.4 重启
sudo systemctl restart dovecot
5.5 创建邮箱
5.5.1 创建用户
# 创建用户目录
sudo mkdir -p /home/vmail
sudo useradd -r -d /home/vmail -s /sbin/nologin vmail
sudo chown -R vmail:vmail /home/vmail
# 生成加密密码(例如密码为123456)
sudo doveadm pw -s SHA512-CRYPT -p "123456"
# 输出示例:{SHA512-CRYPT}$6$xxxxx...
# 创建用户文件
sudo vim /etc/dovecot/users
user1@yourdomain.com:{SHA512-CRYPT}$6$xxxxx...
5.5.2 设置文件权限
sudo chmod 600 /etc/dovecot/users
6 调试
6.1 检查日志
# Postfix 日志
sudo tail -f /var/log/maillog
# Dovecot 日志
sudo tail -f /var/log/dovecot.log
6.2 手动测试SMTP
# 使用 telnet 测试 SMTP
telnet mail.yourdomain.com 25
EHLO localhost
AUTH PLAIN base64_encoded_credentials # 用 base64 编码用户名密码
MAIL FROM: <user1@yourdomain.com>
RCPT TO: <recipient@example.com>
DATA
Subject: Test
This is a test email.
.
QUIT
bug:
1 未监听 587端口
sudo netstat -tuln | grep 587
1. 编辑master.cf 文件
/etc/postfix/master.cf
释放并添加以下内容
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt # 强制 TLS 加密
-o smtpd_sasl_auth_enable=yes # 启用 SASL 认证
-o smtpd_client_restrictions=permit_sasl_authenticated,reject # 仅允许认证用户
-o smtpd_sasl_tls_security_options=noanonymous # 禁止匿名登录
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject # 中继控制
-o milter_macro_daemon_name=ORIGINATING # 兼容性参数
2. 检查语法 重启并测试
postfix check
systemctl restart postfix
ss -tulnp | grep ':587'
3. 开启 STARTTLS 认证
sudo postconf -e "smtpd_tls_security_level=may"
sudo postconf -e "smtp_tls_security_level=may"
sudo systemctl reload postfix
2 用户不存在
1. 检查dovecot配置
/etc/dovecot/conf.d/10-auth.conf
检查邮箱用户是否存在
sudo doveadm user 用户名 如user@email.eucliwwodhellscythe.cn
启用详细日志
/etc/dovecot/conf.d/10-logging.conf
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
mail_debug = yes
查看日志 sudo journalctl -u dovecot --since "1 minute ago"
3 没有sasl 认证机制
sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-lib
测试
telnet mail.eucliwoodhellscythe.cn 25
EHLO localhost
AUTH PLAIN \0username\0password
人傻了,莫名其妙就好了,改的太多不知道都改了啥了...