VPS 搭建邮件服务器 Postfix+Dovecot 完整实战

用自己的域名发个性化邮箱,还能完全掌控数据安全?本教程带你从零搭建功能完整的邮件服务器,支持 IMAP/SMTP、Webmail、反垃圾、SSL 加密,媲美商业邮箱服务。

一、为什么自建邮件服务器

优势:

  • 无限邮箱账号,无容量限制
  • 自定义域名,专业形象
  • 数据完全掌控,隐私安全
  • 成本极低(VPS 月费即可)

挑战:

  • 需要配置 DNS 记录(SPF/DKIM/DMARC)
  • 部分邮箱服务商可能拒收(需做好信誉)
  • 需要定期维护

我的建议:个人使用或小团队完全可行,大型企业建议用商业服务。

二、环境准备

系统要求:

  • Ubuntu 20.04/22.04(本教程基于 Ubuntu 22.04)
  • 2GB 内存以上
  • 25 端口开放(部分云服务商默认关闭,需申请)
  • 已备案或正常域名
# 更新系统apt update && apt upgrade -y# 设置主机名(重要!必须是邮件域名)hostnamectl set-hostname mail.yourdomain.comecho "127.0.0.1 mail.yourdomain.com mail" >> /etc/hosts

三、安装 Postfix(SMTP 服务器)

步骤 1:安装 Postfix

apt install postfix -y

安装过程中会弹出配置界面:

  • General type of configuration: Internet Site
  • System mail name: mail.yourdomain.com

步骤 2:配置 Postfix

cat >> /etc/postfix/main.cf << 'EOF'
# 基础配置
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

# 网络设置
inet_interfaces = all
inet_protocols = ipv4

# SMTP 认证
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_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key

# 限制设置
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks

# 邮箱大小限制
mailbox_size_limit = 0
message_size_limit = 52428800
EOF

步骤 3:重启 Postfix

systemctl restart postfix

四、安装 Dovecot(IMAP/POP3 服务器)

步骤 1:安装 Dovecot

apt install dovecot-imapd dovecot-pop3d dovecot-lmtpd -y

步骤 2:配置 Dovecot

cat > /etc/dovecot/dovecot.conf << 'EOF'
protocols = imap pop3 lmtp
listen = *
mail_location = maildir:~/Maildir
mail_privileged_group = mail

# 认证配置
auth_mechanisms = plain login
disable_plaintext_auth = yes

passdb {
  driver = pam
}

userdb {
  driver = passwd
}

# SSL 配置
ssl = required
ssl_cert = 

步骤 3:重启 Dovecot

systemctl restart dovecot

五、配置 SSL 证书(Let's Encrypt)

步骤 1:安装 Certbot

apt install certbot -y

步骤 2:申请证书

certbot certonly --standalone -d mail.yourdomain.com

步骤 3:更新证书路径

# 更新 Postfix 配置
postconf -e "smtpd_tls_cert_file=/etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem"
postconf -e "smtpd_tls_key_file=/etc/letsencrypt/live/mail.yourdomain.com/privkey.pem"
systemctl restart postfix

# 更新 Dovecot 配置
sed -i 's|ssl_cert = 

六、配置 DNS 记录(关键!)

在域名 DNS 管理面板添加以下记录:

# A 记录
mail.yourdomain.com.  IN  A  你的服务器 IP

# MX 记录
yourdomain.com.  IN  MX  10 mail.yourdomain.com.

# SPF 记录(防止被标记为垃圾邮件)
yourdomain.com.  IN  TXT  "v=spf1 mx ip4:你的服务器 IP -all"

# DKIM 记录(需要安装 OpenDKIM 后获取)
selector._domainkey.yourdomain.com. IN TXT "v=DKIM1; k=rsa; p=公钥内容"

# DMARC 记录
_dmarc.yourdomain.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:[email protected]"

# PTR 记录(反向 DNS,需在 VPS 服务商控制台设置)
你的服务器 IP  -> mail.yourdomain.com

七、安装 Webmail(Rainloop)

步骤 1:安装 Nginx 和 PHP

apt install nginx php-fpm php-imap php-mbstring -y

步骤 2:下载 Rainloop

cd /var/www
wget https://rainloop.net/repository/webmail/rainloop-latest.zip
unzip rainloop-latest.zip -d rainloop
chown -R www-data:www-data rainloop
chmod -R 755 rainloop
chmod -R 777 rainloop/data  # 数据目录权限

步骤 3:配置 Nginx

cat > /etc/nginx/sites-available/webmail << 'EOF'
server {
    listen 80;
    server_name webmail.yourdomain.com;
    root /var/www/rainloop;
    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
EOF

ln -s /etc/nginx/sites-available/webmail /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

步骤 4:访问配置页面

浏览器打开:http://webmail.yourdomain.com/?admin

默认账号密码:admin / 12345(首次登录后立即修改)

八、创建邮箱账号

方法 1:系统用户(简单)

# 创建邮箱用户
adduser user1
# 设置密码后,邮箱地址为:[email protected]

方法 2:虚拟用户(推荐,支持多域名)

需要配置 MySQL 存储虚拟用户信息,这里不过多展开。

九、反垃圾和杀毒

安装 SpamAssassin(反垃圾)

apt install spamassassin spamc -y
systemctl enable spamassassin
systemctl start spamassassin

安装 ClamAV(杀毒)

apt install clamav clamav-daemon -y
systemctl enable clamav-freshclam
systemctl start clamav-freshclam

# 更新病毒库
freshclam

集成到 Postfix

apt install postfix-pcre -y
# 配置内容较长,参考官方文档

十、测试邮件服务

测试 SMTP 发送

telnet localhost 25
EHLO localhost
AUTH LOGIN
# 输入 Base64 编码的用户名和密码
MAIL FROM: [email protected]
RCPT TO: [email protected]
DATA
Subject: 测试邮件

这是一封测试邮件。
.
QUIT

测试 IMAP 接收

# 使用命令行测试
openssl s_client -connect mail.yourdomain.com:993 -quiet
# 或使用邮件客户端(Outlook、Thunderbird 等)

测试 Webmail

登录 http://webmail.yourdomain.com 收发测试。

十一、我踩过的坑

坑 1:25 端口被封锁

阿里云、腾讯云等默认关闭 25 端口。解决:提交工单申请,或使用 465/587 端口。

坑 2:邮件进垃圾箱

必须正确配置 SPF、DKIM、DMARC 和 PTR 记录,否则必进垃圾箱。

坑 3:SSL 证书配置错误

证书路径或权限不对会导致连接失败。解决:仔细检查路径和权限(600)。

坑 4:Gmail 拒收

新建邮件服务器信誉低,Gmail 可能拒收。解决:逐步建立信誉,初期不要大量发送。

十二、日常维护

# 查看邮件队列
mailq

# 查看邮件日志
tail -f /var/log/mail.log

# 清理旧邮件
find /home -name "*.msf" -mtime +30 -delete

# 更新 SSL 证书(Certbot 自动续期)
certbot renew --dry-run

总结

自建邮件服务器虽然有一定技术门槛,但带来的自主性和隐私保护是商业服务无法比拟的。本方案已在我生产环境运行 2 年,稳定可靠。

如果你有技术基础,想要完全掌控自己的邮件数据,这套方案值得投入。

来源:https://mjj.728.hk/


已发布

分类

来自

标签: