下面给你一个从零开始部署 Ubuntu 邮件服务器(Postfix + Dovecot)的完整实战指南,适合企业邮箱 / 自建域名邮箱。
示例以 Ubuntu 22.04 LTS 为例,假设你的域名为 example.com。
sudo hostnamectl set-hostname mail.example.com
编辑 hosts:
sudo nano /etc/hosts
添加:
1.2.3.4 mail.example.com example.com
在域名 DNS 服务商处添加:
example.com MX 10 mail.example.com
mail.example.com A 服务器IP
向服务器提供商申请:
IP → mail.example.com
example.com TXT "v=spf1 mx ~all"
default._domainkey.example.com
_dmarc.example.com TXT "v=DMARC1; p=quarantine; rua=mailto:admin@example.com"
sudo apt update
sudo apt install -y postfix dovecot-core dovecot-imapd dovecot-pop3d mailutils
example.com编辑主配置:
sudo nano /etc/postfix/main.cf
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, $mydomain
mynetworks = 127.0.0.0/8
home_mailbox = Maildir/
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
sudo nano /etc/dovecot/dovecot.conf
protocols = imap pop3
sudo nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir
sudo nano /etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no
auth_mechanisms = plain login
启用系统用户认证:
!include auth-system.conf.ext
sudo nano /etc/dovecot/conf.d/10-master.conf
在 service auth 中添加:
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
使用系统用户:
sudo useradd -m -s /bin/bash user1
sudo passwd user1
邮箱目录:
/var/spool/mail
或
/home/user1/Maildir
sudo apt install opendkim opendkim-tools
sudo mkdir -p /etc/opendkim/keys/example.com
cd /etc/opendkim/keys/example.com
sudo opendkim-genkey -s default -d example.com
sudo chown opendkim:opendkim default.private
cat default.txt
sudo nano /etc/opendkim.conf
Domain example.com
KeyFile /etc/opendkim/keys/example.com/default.private
Selector default
Socket inet:8891@localhost
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_default_action = accept
sudo systemctl restart postfix
sudo systemctl restart dovecot
sudo systemctl restart opendkim
echo "test" | mail -s "hello" user@example.com
✅ 使用 SSL 证书(Let’s Encrypt)
✅ 使用 PostfixAdmin + MariaDB
✅ 使用 Roundcube Webmail
✅ 使用 Fail2ban 防暴力破解
如果你愿意,我可以:
直接告诉我你的 Ubuntu 版本 + 域名 + 云厂商 即可。