一、实验环境
邮件服务器系统:Ubuntu 24.04.4 LTS
主机名:mail.ad.yxwa.info
双网卡:
- enp6s18:172.16.11.67/24
- enp6s19:192.168.1.20/24
AD 域名:ad.yxwa.info
域控/DNS:192.168.1.122
网关:192.168.1.1
[此为复现部署教程,步骤极其复杂繁琐,推荐直接查阅原理构造篇]

二、修改主机名
执行:
sudo hostnamectl set-hostname mail.ad.yxwa.info
hostname
hostname -f
三、修改 hosts
编辑:
sudo nano /etc/hosts
写成:
127.0.0.1 localhost
127.0.1.1 mail.ad.yxwa.info mail172.16.11.67 mail.ad.yxwa.info mail
192.168.1.20 mail.ad.yxwa.info mail::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
验证:
hostname
hostname -f
getent hosts mail.ad.yxwa.info

四、配置第二块网卡为静态地址
编辑 netplan:
sudo nano /etc/netplan/50-cloud-init.yaml
配置为:
network:
version: 2
ethernets:
enp6s18:
dhcp4: true enp6s19:
dhcp4: false
addresses:
- 192.168.1.20/24
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
metric: 200
nameservers:
addresses:
- 192.168.1.122
应用配置:
sudo netplan try
sudo netplan apply
验证:
ip a show enp6s19
ip route
resolvectl status


五、在 Windows DNS 中添加解析记录
这一步不是 Linux 命令,需要在域控的 DNS 管理器里完成:
- 在 ad.yxwa.info 区域添加 A 记录
mail -> 192.168.1.20 - 添加 MX 记录
ad.yxwa.info -> mail.ad.yxwa.info

Linux 侧验证:
sudo apt update
sudo apt install -y dnsutilsnslookup mail.ad.yxwa.info 192.168.1.122
nslookup -type=mx ad.yxwa.info 192.168.1.122
nslookup -type=srv _ldap._tcp.dc._msdcs.ad.yxwa.info 192.168.1.122
nslookup -type=srv _kerberos._tcp.ad.yxwa.info 192.168.1.122
六、安装 AD 加域组件
执行:
sudo apt update
sudo apt install -y realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit krb5-user samba winbind libnss-winbind libpam-winbind

安装 krb5-user 时,如果提示默认 Kerberos 域,填写:AD.YXWA.INFO
发现域:
realm discover ad.yxwa.info
测试 Kerberos:
kinit Administrator@AD.YXWA.INFO
klist

这一步说明 发现域 已经成功了:
realm discover ad.yxwa.info 正常
realm-name = AD.YXWA.INFO
Kerberos 默认域也已经是 AD.YXWA.INFO

七、使用 Samba/Winbind 加入 AD 域
执行:
sudo realm join -v ad.yxwa.info \
--membership-software=samba \
--client-software=winbind \
-U Administrator
验证:

realm list
wbinfo -u | head
id 'Administrator@ad.yxwa.info'

八、开启域用户首次登录自动建家目录
执行:
sudo pam-auth-update
sudo systemctl restart winbind
在界面中勾选:
Create home directory on login

验证:
grep mkhomedir /etc/pam.d/common-session

测试域用户登录:
getent passwd 'AD\administrator'
sudo su - 'AD\administrator'
pwd
exit

九、安装 Postfix
执行:
sudo apt update
sudo apt install -y postfix
安装界面中选择:

- General type of mail configuration:
Internet Site - System mail name:
ad.yxwa.info
确认:
cat /etc/mailname
systemctl status postfix --no-pager

十、修改 Postfix 主配置
先备份:
sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.bak
编辑:
sudo nano /etc/postfix/main.cf
保留原有 TLS 相关默认项的前提下,至少确保这些参数存在且为以下内容:
myhostname = mail.ad.yxwa.info
mydomain = ad.yxwa.info
myorigin = $mydomaininet_interfaces = all
inet_protocols = ipv4mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 127.0.0.0/8, 192.168.1.0/24, 172.16.11.0/24home_mailbox = Maildir/smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
检查并重启:
sudo postfix check
sudo systemctl restart postfix
验证:

postconf | egrep '^(myhostname|mydomain|myorigin|mydestination|mynetworks|home_mailbox|inet_protocols|smtpd_recipient_restrictions)'
systemctl status postfix --no-pager

十一、创建本地测试用户
执行:
sudo adduser alice
sudo adduser bob
验证:

id alice
id bob

十二、安装 Dovecot 并创建 Maildir
安装:
sudo apt update
sudo apt install -y dovecot-core dovecot-imapd mailutils
编辑 Dovecot 邮箱位置配置:
sudo nano /etc/dovecot/conf.d/10-mail.conf
将这一行改为:
mail_location = maildir:~/Maildir
重启并验证:
sudo systemctl restart dovecot
doveconf -n | grep mail_location
systemctl status dovecot --no-pager
然后初始化用户邮箱目录:
sudo maildirmake.dovecot /home/alice/Maildir
sudo chown -R alice:alice /home/alice/Maildirsudo maildirmake.dovecot /home/bob/Maildir
sudo chown -R bob:bob /home/bob/Maildir
验证:
ls -la /home/alice/Maildir
ls -la /home/bob/Maildir

十三、测试本地邮件投递
执行:
echo "hello alice" | mail -s "test-1" alice
echo "hello bob" | mail -s "test-2" bob
验证:
sudo ls -la /home/alice/Maildir/new
sudo ls -la /home/bob/Maildir/new
sudo tail -n 20 /var/log/mail.log
如果成功,日志中会出现:

status=sent (delivered to maildir)
十四、测试 IMAPS 993 收信
执行:
openssl s_client -connect 127.0.0.1:993 -crlf
连接成功后输入:
a1 login alice alice密码
a2 select INBOX
a3 fetch 1 body[header]
a4 logout
如果成功,应看到:
- a1 OK Logged in
- * 1 EXISTS
- 邮件头部内容
- a4 OK Logout completed
十五、启用 Postfix Submission 587
编辑:
sudo nano /etc/postfix/master.cf
将 submission 段改为:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=no
-o smtpd_recipient_restrictions=permit_mynetworks,reject
检查并重启:
sudo postfix check
sudo systemctl restart postfix
验证:
ss -tulpn | grep 587
postconf -M submission/inet
十六、测试 Submission 587
执行:
openssl s_client -starttls smtp -connect 127.0.0.1:587 -crlf
连接后输入:
ehlo test
quit
如果成功,应返回 SMTP 能力列表以及:
221 2.0.0 Bye

到这里,已经完成的是:双网卡与 DNS 基础配置
Ubuntu 加入 ad.yxwa.info
域用户可登录系统
Postfix 本地投递
Dovecot IMAPS 收信
587 Submission 端口启用
本地用户 alice、bob 收发测试通过
后续还有没完成的还有Roundcube的图形化及其要调试的东西
Comments NOTHING