Postfix:电子邮件转发的传输

Postfix:电子邮件转发的传输

我有一个 Postfix 设置,虚拟用户运行得很好。我的一些用户将他们的电子邮件重定向到外部电子邮件 gmail 帐户,例如:为了方便起见,通过[email protected]转发到。[email protected]virtual_alias_maps

现在我尝试使用transport_maps专门的传输来进行这些转发,如下所示:

主要.cf:

virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_alias_maps = mysql:/etc/postfix/virtual/mysql-alias-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/virtual/mysql-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/virtual/mysql-mailbox-maps.cf
default_transport = out-default
transport_maps = mysql:/etc/postfix/virtual/mysql-transport-maps.cf

master.cf:

out-default   unix  -       -       n       -       -       smtp
 -o proxy_interfaces=$smtp_default_transport_proxy_interface
 -o smtp_bind_address=$smtp_default_transport_interfaces
 -o inet_interfaces=$smtp_default_transport_interfaces
 -o myhostname=$smtp_default_transport_hostname
 -o smtp_helo_name=$smtp_default_transport_hostname
 -o syslog_name=smtp-$smtp_default_transport_hostname
out-fwd   unix  -       -       n       -       -       smtp
 -o proxy_interfaces=$smtp_default_transport_proxy_interface
 -o smtp_bind_address=$smtp_default_transport_interfaces
 -o inet_interfaces=$smtp_default_transport_interfaces
 -o myhostname=$smtp_default_transport_hostname
 -o smtp_helo_name=$smtp_default_transport_hostname
 -o syslog_name=smtp-fwd-$smtp_default_transport_hostname
 -o bounce_queue_lifetime=0
 -o maximal_queue_lifetime=0

mysql-alias-maps.cf:

query = SELECT destination FROM `aliases` WHERE source='%s'

mysql-transport-maps.cf:

query = SELECT IF (ISNULL(destination), NULL, 'out-fwd') as transport \
FROM `aliases` \
WHERE destination='%s' \
AND destination LIKE '%%@gmail.com'

我想要实现的是“如果用户将电子邮件转发到@gmail,则会减少队列生命周期。

现在,当我尝试向这些用户发送电子邮件时,会发生以下情况:

postfix/qmgr[28839]: warning: connect to transport private/out-fwd,out-fwd: No such file or directory

私人/外转,外转>为什么它重复运输的名称?

如果我将查询更改为 return out-fwd:(末尾冒号),我会得到:

smtp-fwd-xxxx/smtp[23429]: fatal: valid hostname or network address required in server description: ,out-fwd:

,out-fwd: ???为什么?

请注意,如果我只是评论,则transport_maps电子邮件会使用default_transport = out-default很好的方式发送。

谢谢。

答案1

我发现了这个问题,这是我的问题。如果有多个本地帐户转发/别名到同一个外部 gmail 帐户,并且由于某种原因 Postfix 会连接结果,上面的查询将返回多个结果。

query = SELECT IF (ISNULL(destination), NULL, 'out-fwd') as transport \
FROM `aliases` \
WHERE destination='%s' \
AND destination LIKE '%%@gmail.com' \
LIMIT 1

添加LIMIT修复了问题。

相关内容