使用 DB Lookup 进行 Linux MTA 电子邮件转发

使用 DB Lookup 进行 Linux MTA 电子邮件转发

我需要设置一个接收电子邮件的服务,例如[电子邮件保护]在 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

相关内容