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=raspf=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

人傻了,莫名其妙就好了,改的太多不知道都改了啥了...