我需要设置一个接收电子邮件的服务,例如[电子邮件保护]在 MySQL 数据库中查找电子邮件地址的 uniqueID,然后将收到的电子邮件转发到该电子邮件地址(位于服务器外部)。
我只想使用 MTA 来执行此操作,而不使用任何类似 dovecot 的东西,因为不需要 IMAP 或 POP3。有人能提供一下如何使用 exim 或 postfix 进行此操作的粗略指南吗?
答案1
您exim
可以像这样使用路由器:
db_fwd:
driver = redirect
data = ${lookup mysql{SELECT `destination` \
FROM `forwarding` \
WHERE `uniqueID`='${quote_mysql:$local_part}'}}
allow_fail
allow_defer
表forwarding
包含这样的行:
ID uniqueID destination
1 awer0zsg9fg [email protected]
答案2
对于其他任何人来说,使用 postfix 都比我想象的要容易:首先使用以下命令检查 mysql 支持:postconf -m
然后:用适当的默认值编辑 main.cf(设置 myhostname、mydomain、mydestination,检查 inet_interfaces 不只绑定到 localhost),然后将以下内容添加到 main.cf 的底部:
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-forwards.cf
mysql-forwards.cf 的内容应该类似于此:
user = dbuser
password = dbpassword
dbname = database
query = SELECT column AS destination FROM some_table WHERE id='%s'
hosts = mysql-host-name-or-ip