一、实验环境

邮件服务器系统: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 管理器里完成:

  1. 在 ad.yxwa.info 区域添加 A 记录
    mail -> 192.168.1.20
  2. 添加 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的图形化及其要调试的东西

此作者没有提供个人介绍。
最后更新于 2026-04-02