生成 ssl 证书
生成 ssl 证书可参考这一篇https://www.jb51.net/article/60371.htm ,假设证书存放地址为:
公钥 /etc/letsencrypt/live/test.com/fullchain.pem; 私钥 /etc/letsencrypt/live/test.com/privkey.pem;配置 postfix
首选备份 postfix 的默认配置文件,然后编辑main.cf
cp /etc/postfix/main.cf /etc/postfix/main.cf.bak vim /etc/postfix/main.cf
注释下面的配置:

然后加入如下的配置:
# 使用自己的ssl证书 smtpd_tls_cert_file=/etc/letsencrypt/live/test.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/test.com/privkey.pem smtpd_use_tls=yes smtpd_tls_auth_only = yes # 使用dovecot来做身份认证 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
修改 myhostname,myorigin 为如下的值:
myhostname = test.com myorigin = $myhostname
修改 mydestination 值为 localhost,以启动 mysql 中的虚拟域。:
mydestination = localhost
在配置文件的最后加入以下行,确保将邮件投递给 mysql 表中列出的虚拟域。
virtual_transport = lmtp:unix:private/dovecot-lmtp
最后加入以下三项参数,告知 Postfix 配置虚拟域、用户和别名
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
接下来创建上面最后加入的三项参数对应的文件。
创建/etc/postfix/mysql-virtual-mailbox-domains.cf,内容如下:
user = admin password = 123456 port = 3306 hosts = 127.0.0.1 dbname = mailserver query = SELECT 1 FROM virtual_domains WHERE name='%s'
接着重启 postfix,并测试 postfix 能否找到域,如果成功返回 1:
service postfix restart postmap -q test.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
创建/etc/postfix/mysql-virtual-mailbox-maps.cf,内容如下:
user = admin password = 123456 port = 3306 hosts = 127.0.0.1 dbname = mailserver query = SELECT 1 FROM virtual_users WHERE email='%s'
接着重启 postfix,并测试其能否找到邮箱地址,成功返回 1:
service postfix restart postmap -q first@test.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
最后创建/etc/postfix/mysql-virtual-alias-maps.cf,内容如下:
user = admin password = 123456 port = 3306 hosts = 127.0.0.1 dbname = mailserver query = SELECT destination FROM virtual_aliases WHERE source='%s'










