后缀 transport_maps 和 virtual_mailbox
Postfix transport_maps and virtual_mailbox
我正在尝试将一个特定地址传送到 php 脚本,但似乎我的 transport_maps 没有触发,而是使用了 virtual_transport。这是我拥有的:
@example.com 列在 virtual_mailbox_domains 中,投递到虚拟邮箱工作正常。
但我需要将 foo@example.com 的所有消息转发到另一个服务而不是 dovecot-lda(在 virtual_transport 中指定)。
这是我virtual_transport的送货方式:
dovecot unix - n n - - 管道
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
这就是我要通过管道传输所有 foo@example.com
的地方
php_script unix - n n - - 管道
flags=Fq user=www-data argv=/home/script.php
postconf -n
alias_database = 散列:/etc/aliases
alias_maps = 散列:/etc/aliases
append_dot_mydomain = 没有
biff = 否
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
mailbox_size_limit = 0
milter_default_action = 接受
milter_protocol = 2
我的目的地=本地主机
我的主机名 = 本地主机
我的网络 = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
non_smtpd_milters = net:localhost:12301
readme_directory = 没有
recipient_delimiter = +
中继主机=
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_milters=我net:localhost:12301
smtpd_recipient_restrictions =
smtpd_relay_restrictions = permit_sasl_authenticated permit_mynetworks
defer_unauth_destination
smtpd_sasl_auth_enable = 是
smtpd_sasl_path = private/auth
smtpd_sasl_type = 鸽舍
smtpd_tls_auth_only = 是
smtpd_tls_cert_file = /etc/ssl/certs/mailserver.pem
smtpd_tls_key_file = /etc/ssl/private/mailserver.pem
smtpd_tls_security_level = 可能
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = 是
transport_maps = 散列:/etc/postfix/传输
virtual_alias_maps = mysql:/etc/postfix/mysql-虚拟别名-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-虚拟邮箱-
domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-虚拟邮箱-maps.cf
virtual_transport = 鸽舍
在/etc/postfix/运输
foo@example.com php_script
似乎后缀只是忽略了transport_map,我在虚拟邮箱中总是得到用户未知table。这是正确的没有这样的用户,但我想通过transport_maps转发邮件,然后再检查是否有虚拟用户。
有人能帮忙吗?花了两天时间搜索,阅读 man 并尝试但似乎它只是行不通。
好的,我得到了解决方案:
似乎 postfix 不适用于 virtual_transport 和 transport_maps 所以我在 virual_aliases 中创建了转发到 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}
有关脚本参数,请参阅 [http://www.postfix.org/pipe.8.html]
添加地图以触发运输:
# 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_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
之后我可以使用
后缀 transport_maps 与 virtual_mailbox
###### 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
...
我正在尝试将一个特定地址传送到 php 脚本,但似乎我的 transport_maps 没有触发,而是使用了 virtual_transport。这是我拥有的:
@example.com 列在 virtual_mailbox_domains 中,投递到虚拟邮箱工作正常。
但我需要将 foo@example.com 的所有消息转发到另一个服务而不是 dovecot-lda(在 virtual_transport 中指定)。
这是我virtual_transport的送货方式:
dovecot unix - n n - - 管道 flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}
这就是我要通过管道传输所有 foo@example.com
的地方php_script unix - n n - - 管道 flags=Fq user=www-data argv=/home/script.php
postconf -n
alias_database = 散列:/etc/aliases
alias_maps = 散列:/etc/aliases
append_dot_mydomain = 没有
biff = 否
config_directory = /etc/postfix
dovecot_destination_recipient_limit = 1
mailbox_size_limit = 0
milter_default_action = 接受
milter_protocol = 2
我的目的地=本地主机
我的主机名 = 本地主机
我的网络 = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
non_smtpd_milters = net:localhost:12301
readme_directory = 没有
recipient_delimiter = +
中继主机=
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_milters=我net:localhost:12301
smtpd_recipient_restrictions =
smtpd_relay_restrictions = permit_sasl_authenticated permit_mynetworks
defer_unauth_destination
smtpd_sasl_auth_enable = 是
smtpd_sasl_path = private/auth
smtpd_sasl_type = 鸽舍
smtpd_tls_auth_only = 是
smtpd_tls_cert_file = /etc/ssl/certs/mailserver.pem
smtpd_tls_key_file = /etc/ssl/private/mailserver.pem
smtpd_tls_security_level = 可能
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = 是
transport_maps = 散列:/etc/postfix/传输
virtual_alias_maps = mysql:/etc/postfix/mysql-虚拟别名-maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-虚拟邮箱-
domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-虚拟邮箱-maps.cf
virtual_transport = 鸽舍
在/etc/postfix/运输 foo@example.com php_script
似乎后缀只是忽略了transport_map,我在虚拟邮箱中总是得到用户未知table。这是正确的没有这样的用户,但我想通过transport_maps转发邮件,然后再检查是否有虚拟用户。
有人能帮忙吗?花了两天时间搜索,阅读 man 并尝试但似乎它只是行不通。
好的,我得到了解决方案:
似乎 postfix 不适用于 virtual_transport 和 transport_maps 所以我在 virual_aliases 中创建了转发到 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}
有关脚本参数,请参阅 [http://www.postfix.org/pipe.8.html]
添加地图以触发运输:
# 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_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
之后我可以使用
后缀 transport_maps 与 virtual_mailbox
###### 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
...