我的一台服务器上有一个标准 Postfix 服务器,目前我还没有设置任何东西。我希望实现的是:在 MySQL 数据库中,我希望存储 Postfix 接受的电子邮件地址。其他一切都应该被拒绝。
我读了很多“HOWTO”,但现在我对此感到很困惑。步骤是??
创建一个数据库,其中包含 id、地址、状态(例如 1,[电子邮件保护],好的)
在 /etc/postfix 中创建一个 cfg 文件来告知 DB 连接详细信息 + 一个查询,例如:从用户中选择状态,其中地址 ='%s' (顺便问一下,%s 是什么?)
在 main.cfg 中添加以下内容: smtpd_recipient_restrictions = check_recipient_access mysql:/etc/postfix/mysql-recipient-access.cf
重新启动 postfix 和 viola....
不是最后一部分,“voila”对我来说不起作用。我在这个想法上犯了什么错误?
我总是得到以下回复:
Mar 25 12:46:40 myserver postfix/local[32436]: 6D1C88XXX: to=<[email protected]>, relay=local, delay=0.21, delays=0.15/0.03/0/0.02, dsn=5.1.1, status=bounced (unknown user: "anyone")
在数据库中我有一行:id:1, address:[email protected], status:OK
答案1
哈……哈……别在意我了。再次上传了一个问题,然后很快就找到了解决方案。:D 所以我做错的是,我错过了 luser_relay 将所有消息转发给现有用户并将本地收件人映射转发到数据库。总结一下,您需要执行以下操作:
/etc/postfix/main.cf
- myhostname = mail.myserver.com
- 我的域名 = myserver.com
- myorigin = $mydomain
- inet_interfaces = 全部
- mydestination = $我的主机名,localhost,$我的域名
- 我的网络 = 127.0.0.0/8,我的.服务器.IP.地址/32
- 中继域 = $我的目的地
- home_mailbox = Maildir/
- luser_relay=[电子邮件保护]
- local_recipient_maps = mysql:/etc/postfix/vmailbox
在/etc/postfix/vmailbox
- 用户 = dbadmin
- 密码 = SECRET
- 主机 = 本地主机
- 数据库名称 = 邮件服务器
- 查询 = SELECT id FROM places WHERE email='%s'
现在我们可以讨论任何事情了:)