在 Ubuntu 上搭建邮件服务器是一个系统工程,涉及多个组件。下面我给你一个从零到可用的完整思路,适合生产环境,也适合学习。
一个完整的邮件服务器通常包括:
| 功能 | 软件 |
|---|---|
| SMTP(发信) | Postfix |
| IMAP / POP3(收信) | Dovecot |
| 用户认证 | Dovecot SASL / MySQL |
| 防垃圾邮件 | SpamAssassin |
| 防病毒 | ClamAV(可选) |
| 邮件过滤 | Postfix + Dovecot |
| Webmail | Roundcube(可选) |
假设你的域名是 example.com
A mail.example.com → 服务器公网 IP
MX example.com → mail.example.com
mail.example.com❗ 没有 PTR,邮件极大概率被当成垃圾邮件
sudo apt update
sudo apt install -y postfix dovecot-core dovecot-imapd dovecot-pop3d \
mailutils spamassassin clamav clamav-daemon
安装 Postfix 时选择:
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_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
编辑:
sudo nano /etc/postfix/master.cf
取消注释或添加:
submission inet n - y - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
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
邮箱目录:
/home/user1/Maildir
sudo systemctl restart postfix dovecot
sudo systemctl enable postfix dovecot
echo "test" | mail -s "hello" user1@example.com
mail.example.commail.example.comTXT example.com
"v=spf1 mx -all"
使用 opendkim
TXT _dmarc.example.com
"v=DMARC1; p=quarantine; rua=mailto:admin@example.com"
如果你不想折腾:
✅ iRedMail(一键安装)
wget https://iredmail.org/iRedMail.sh
bash iRedMail.sh
| 问题 | 原因 |
|---|---|
| 发不出去 | 25 端口被封 |
| 进垃圾邮箱 | 无 PTR / SPF / DKIM |
| 认证失败 | SASL 未配置 |
| 收不到信 | 防火墙 / DNS |
你可以告诉我:
我可以给你 定制配置方案 或 一步一步命令版教程。