Back to homepage

家用宽带搭建 Postfix&Dovecot 邮件服务器

nios34于 February 17, 2021 发表在默认分类


如果尝试过用 apt 安装 postfix 的朋友应该知道,里面的配置有:Internet Site、Internet with smarthost、Satellite system 和 Local only 五种。那么既然已经有了公网 IP,我们就折腾一下 Postfix 的 Internet 模式吧!

一个邮件服务器可以保护你的信件免受 ** 的监控,还方便进行备份。也可以用来接收家里服务器的日志,例如:Cron 会将脚本的运行结果邮寄到 root。并且我现在就在使用我的自建邮箱接受验证码(

在搭建自己的邮件服务器前,你需要一下几样东西:

好的,让我们开始吧!

通信配置

找到你的 DNS 服务商,建立下面的解析:

@               MX         ddns.domain.name
ddns            A          XXX.XXX.XXX.XXX 

这里的名字并不重要,你可以将其替换成其他的。

进入路由,配置端口映射。主要涉及如下几个端口:

MTA - Postfix

MTA(全称 Mail Transfer Agent)是负责将邮件递送出去的应用。这里使用的实现为 Postfix。

先安装。在 Armbian 下使用这条命令:sudo apt install libsasl2-modules postfix -y。配置界面出现时,选择 Internet Site 或者 Internet with smarthost (如果有的话)。

打开 /etc/postfix/main.cf,编辑下面几个字段:

保存后,打开 /etc/postfix/master.cf,按如下说明编辑:

让其部分变成如下所示的样子(取消注释,增加东西)。

submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth

我们还需要加密对邮件服务器的请求,所以,配置 SSL/TLS。使用 Let's ENC 或者 IDC 提供的 SSL 证书安装。至于安装路径,检查 /etc/postfix/main.cf 这个文件。

其字段 smtpd_tls_cert_file 和 smtpd_tls_key_file 分别代表了要安装证书与密钥的位置。注意,这里使用 Nginx 格式的证书,即 crt 文件加 key 文件。、

安装好证书后,追加 smtpd_use_tls=yes 到 main.cf 文件。 Postfix 配置完成了。

MDA - Dovecot

MDA(全称 Mail Delivery Agent)是负责接受邮件和查看邮件的应用。这里使用的实现为 Dovecot。

安装 Dovecot:apt install dovecot-core dovecot-imapd -y

安装后,删除(备份一下也不错)配置文件 /etc/dovecot/dovecot.conf。然后新建,并加入如下内容:

disable_plaintext_auth = no
mail_privileged_group = mail
mail_location = mbox:~/mail:INBOX=/var/mail/%u
userdb {
    driver = passwd
}
passdb {
    args = %s
    driver = pam
}
protocols = " imap"

protocol imap {
    mail_plugins = " autocreate"
}
plugin {
    autocreate = Trash
    autocreate2 = Sent
    autosubscribe = Trash
    autosubscribe2 = Sent
}

protocol imap {
    mail_plugins = " autocreate"
}
plugin {
    autocreate = Trash
    autocreate2 = Sent
    autosubscribe = Trash
    autosubscribe2 = Sent
}

service auth {
    unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
    }
}

ssl=required
ssl_cert = </path/to/cert.crt
ssl_key = </path/to/cert.key

不要忘记修改证书的路径!

为了更方便的接收验证码(?),我们加上一些别名。打开 /etc/aliases,在后面插入类似这样的文本:

verify: nios34

这样,所有到 verify@domain.name 的邮件都会到 nios34@domain.name 去。使用这个命令,最后更新别名的数据,执行:newaliases

运行邮件服务

启动邮件服务,使用下面的命令:

service postfix restart
service dovecot restart

你或许想让它开机自启:

systemctl enable postfix
systemctl enable dovecot

It didn't work!

发现连不上是很正常的,因为我没有告诉你帐号密码 :-p。要创建一个邮件用户,和创建 Unix 用户是一样的。使用 adduser 或者 useradd 就可以了。

如果出现登陆不了的情况,请进行手动设置。例如,你的邮箱是 aaa@domain.name,你要确保登陆的用户名是 aaa 而非 aaa@domain.name

发现发不出邮件也是很正常的,因为你的 IP 在 spamhaus 的垃圾邮件数据库中。你需要访问 spamhaus.org 解封 IP。、

如果提示的是 DNS 错误,那么你就可以换 Smarthost 了。这说明对方邮件服务器需要检查 IP 的反向 DNS (PTR 记录)。而不管是中国电信、中国联通还是中国移动,都没有那种东西。

It works!

这个简单又没卵用的教程就到这里结束了。:-)
演示