Linux 后缀传输映射和虚拟邮箱
我试图通过管道将一个特定地址传输到php脚本,但似乎我的传输映射没有触发,而是使用了虚拟传输。以下是我所拥有的: @example.com列在虚拟邮箱域中,向虚拟邮箱的传递工作正常 但我需要为您转发所有邮件foo@example.com不是到dovecot lda(在虚拟_传输中指定),而是到另一个服务 这是我的虚拟传输交付方法: 多佛科特unix-n--管道 flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot lda-f${sender}-d${recipient} 这就是我想用管道输送所有信息的地方foo@example.com php_脚本unix-n--pipe flags=Fq user=www-data-argv=/home/script.php postconf-n 别名\数据库=散列:/etc/别名Linux 后缀传输映射和虚拟邮箱,linux,pipe,postfix-mta,mail-server,Linux,Pipe,Postfix Mta,Mail Server,我试图通过管道将一个特定地址传输到php脚本,但似乎我的传输映射没有触发,而是使用了虚拟传输。以下是我所拥有的: @example.com列在虚拟邮箱域中,向虚拟邮箱的传递工作正常 但我需要为您转发所有邮件foo@example.com不是到dovecot lda(在虚拟_传输中指定),而是到另一个服务 这是我的虚拟传输交付方法: 多佛科特unix-n--管道 flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot lda-f${sen
别名\u映射=哈希:/etc/别名
追加\u dot\u mydomain=no
biff=否
config_directory=/etc/postfix
多佛科特目的地收件人限额=1
邮箱大小限制=0
milter\U default\U action=接受
milter_协议=2
mydestination=localhost
myhostname=localhost
mynetworks=127.0.0.0/8[::ffff:127.0.0.0]/104[::1]/128
myorigin=/etc/mailname
非smtpd milters=net:localhost:12301
自述文件目录=否
收件人\分隔符=+
relayhost=
smtp_tls_session_cache_database=btree:${data_directory}/smtp_scache
smtpd_banner=$myhostname ESMTP$mail_名称(Debian/GNU)
smtpd_milters=inet:localhost:12301
smtpd_收件人_限制=
smtpd\u中继\u限制=许可证\u sasl\u认证许可证\u我的网络
延迟\u未经授权\u目的地 smtpd_sasl_auth_enable=是
smtpd_sasl_path=private/auth
smtpd_sasl_类型=多夫科特
smtpd\U tls\U auth\U only=是
smtpd_tls_cert_file=/etc/ssl/certs/mailserver.pem
smtpd_tls_key_file=/etc/ssl/private/mailserver.pem
smtpd\U tls\U安全级别=可能
smtpd_tls_session_cache_database=btree:${data_directory}/smtpd_scache
smtpd\U use\U tls=是
传输映射=散列:/etc/postfix/transport
虚拟别名映射=mysql:/etc/postfix/mysql虚拟别名映射。cf
virtual\u mailbox\u domains=mysql:/etc/postfix/mysql virtual mailbox-
domains.cf 虚拟邮箱映射=mysql:/etc/postfix/mysql虚拟邮箱映射。cf
虚拟运输=多夫科特
in/etc/postfix/transport foo@example.comphp_脚本 似乎后缀只是忽略了传输映射,我总是在虚拟邮箱表中获取未知用户。这是正确的,没有这样的用户,但是我想在检查是否有虚拟用户之前通过transport_maps转发邮件 有人能帮忙吗?花两天时间搜索、阅读和尝试,但似乎都不起作用。好的,我找到了解决方案:
似乎postfix不能同时使用虚拟传输和传输映射,所以我用虚拟别名创建了转发到foo@localhost然后我使用transport_maps文件来创建管道foo@localhost要编写脚本:)我的解决方案,请记录 创建特定的传输:
# vi /etc/postfix/master.cf
dummy-redirect unix - n n - 50 pipe
user=vmail argv=/opt/postfix-scripts/redirect.py
${sender} ${recipient}
# vi /etc/postfix/redirect_map
plup@dummy.happy-dev.fr dummy-redirect
# postmap /etc/postfix/redirect_map
有关脚本参数,请参见[1]
添加映射以触发传输:
# vi /etc/postfix/master.cf
dummy-redirect unix - n n - 50 pipe
user=vmail argv=/opt/postfix-scripts/redirect.py
${sender} ${recipient}
# vi /etc/postfix/redirect_map
plup@dummy.happy-dev.fr dummy-redirect
# postmap /etc/postfix/redirect_map
配置域和传输映射:
# vi /etc/postfix/main.cf
virtual_mailbox_domains = dummy.happy-dev.fr
virtual_transport = discard
transport_maps = hash:/etc/postfix/redirect_map
在我的例子中,virtual\u transport=discard
替换默认配置以保持一致
# service postfix reload
# postconf -d mail_version
mail_version = 2.11.3
是的,丹尼尔说得对->
It seems postfix does not work with both virtual_transport and transport_maps
但在我的情况下,我禁用
#virtual_transport = lmtp:unix:private/dovecot-lmtp
在main.cf中
并添加到/etc/postfix/transport文件中
my-domain1.com lmtp:unix:private/dovecot-lmtp
my-domain2.com lmtp:unix:private/dovecot-lmtp
my-domain3.com lmtp:unix:private/dovecot-lmtp
在此之后,我可以使用
带有虚拟邮箱的后缀传输映射
###### MySQL Connection ######
virtual_alias_maps = mysql:/etc/postfix/sql/aliases.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/accounts.cf
virtual_mailbox_domains = mysql:/etc/postfix/sql/domains.cf
local_recipient_maps = $virtual_mailbox_maps
...
干得好。你应该接受你自己的答案。你让我成功了。这种说法是不正确的。我在尝试时发现了这一点。实际上是
虚拟邮箱地图
设置阻止postfix查阅传输地图
设置。