Ubuntu 18.04搭建邮箱笔记(Postfix+Dovecot+mySQL)

由于服务器数据迁移,论坛注册时发送验证码用的邮箱配置废掉了。趁着五一假期有空,先在目前这台服务器上把他搞上。

为了安全起见及日后扩展需求,这次采用了虚拟用户的方案,也就是借助SQL来实现多域、多用户。和以往一样,这次也是使用了TLS。

搭建过程主要参考了这位老哥的文章:https://www.cnblogs.com/renweihang/p/7988591.html,总体质量不错,适用于Ubuntu 18.04。注意里面mysql连接的host值127.0.0.1切勿自行改写成写成localhost,经过测试会有连接失败的问题。此外,涉及到的pem/key文件路径均位于/etc/dovecot/private下,而不是一个位于dovecot,另一个在dovecot/private,建议改为有效的证书文件,否则部分邮箱客户端会禁止登录(当然如果只是像我这样发个验证码啥的那没啥问题)。

此外,单域名用户为了确保邮件的合规性,建议在/etc/postfix/main.cf中如下设置:

myhostname = [默认主机名,或者为真实有效的域名,不要设置为localhost]
mydomain = example.com #修改为自己的域名
myorigin = $mydomain  #将发信地址“@”后面的部分设置为域名(非系统主机名)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

#版权声明:本节段节选自为CSDN博主「qinzhiguo003」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
#原文链接:https://blog.csdn.net/hitabc141592/article/details/25986911

为了启用TLS传输,同时保留在其他域不支持TLS时的通信能力,需要在/etc/postfix/main.cf中添加以下两行:

#建议设置成may,如果设置成yes则另一端不支持加密时将无法通信
smtpd_tls_security_level = may
smtp_tls_security_level = may

在对垃圾邮件管控愈加严格的形势下,部分邮箱已经开始拒收无SPF/DKIM域名发送的邮件。我参考了这篇文章(https://www.linuxbabe.com/mail-server/setting-up-dkim-and-spf)设置了SPF和DKIM。以及这篇文章(https://www.linuxbabe.com/mail-server/create-dmarc-record)设置了DMARC。

在我这儿生成的default.txt与示例中及百度到的几篇文章格式有所不同。我的是如下所示,p字段后有两端字符串,而示例中仅有一串。要粘贴的是括号内的内容,提示非法字符就把那几个空格给删掉然后自己重新敲一个进去。

cat /etc/opendkim/keys/easysvc.xyz/default.txt

#结果如下所示
default._domainkey      IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0FKELSUOCAQ8AMIIBCgKBWKSU8HfBNYVwEGVBQqumwRNlIYNLxczpfNYd2Mqiukv8Rr8yYL8J8ymdV2LYWbv41HL4MM251SMyzNPCrJKslXYKrxNgFCK/nTmRlRuRg8uiewhlcXJndCO4hkIA+Ek71sMCszDM07uZE0Niv49G3dMecTWGisrprnlnDmn4W1O62c6oQcyibakacPUSLDlnFfu3b1erR+0AAPhHRy"
          "AFEbX99S3BrsI+PYxPJ8h4gItD1I30CvX2iNdfuUfdMiH00tH5gT5ur9e6jcqbwdwE1CvNYz+hskMeY0IGbcjFIZaK7Q02e4t3x7AuP22dbgfBlN/iXxpl4m5kAGc3sfswwFPvBAQDKWUS" )  ; ----- DKIM key default for easysvc.xyz

之前还参考过linode的一篇文章,弄完发现有坑(好像是因为适用于老版本软件)。腾讯云的那片中文文章几乎就是linode那篇的翻版,注意别踩坑了。但是有个验证有效性的措施倒是很周到。

sudo apt install mailutils

# 请确保已配置dkim/spf,否则邮件会被Gmail直接拒收,用户即使在垃圾箱内也看不到邮件

#测试发件功能
echo "Email body text" | sudo mail -s "Email subject line" [email protected] -aFrom:[email protected]

#测试收件功能
#使用其他邮箱向已配置的账户发送邮件
sudo mail -f /var/mail/vhosts/example.com/email1
#如有邮件,此时会予以显示

遇到些疑难杂症先看看自己配置有没有写错,然后百度谷歌,再没有的话试着直接翻Postfix/Dovecot的Document。

有问题请查看log。

tail /var/log/mail.log

如果一切排查无误,可以通过https://www.mail-tester.com/来测试您的邮件得分了。

label

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据