2015-04-03 5 views
1

Я пытаюсь передать один конкретный адрес в php-скрипт, но кажется, что мой transport_maps не запускается, вместо него используется virtual_transport. Вот что у меня есть:Postfix transport_maps и virtual_mailbox

@ example.com указан в virtual_mailbox_domains, и доставка на виртуальные почтовые ящики отлично работает.

Но мне нужно переслать все сообщения для [email protected] не на dovecot-lda (который указан в virtual_transport), а на другую службу.

Это мой способ доставки для virtual_transport:

голубятня Юникс - пп - - труба флаги = пользователь DRhu = VMail: VMail ARGV =/USR/Библиотека/голубятня/голубятня-Lda -f $ { отправитель} -d $ {получатель}

Это то, где я хочу, чтобы трубы весь каталог [email protected]

PHP_SCRIPT UniX - NN - - труба флаги = пользователь Fq = WWW-данные ARGV = /home/script.php

postconf -n

alias_database = хэш:/и т.д./псевдонимы
alias_maps = хэш:/и т.д./псевдонимы
append_dot_mydomain = нет
Шмяк = нет
config_directory =/и т.д./постфикса
dovecot_destination_recipient_limit = 1
mailbox_size_limit = 0
milter_default_action = принять
milter_protocol = 2
mydestination = локальный
myhostname = локальный
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [:: 1]/128
myorigin =/и т.д./mailname
non_smtpd_milters = нетто: локальный: 12301
readme_directory = нет
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = ВТКЕЕ: $ {data_directory}/smtp_scache
smtpd_banner = $ myhostname ESMTP $ mail_name (Debian/GNU)
smtpd_milters = инет: локальный: 12301
smtpd_recipient_restrictions =
smtpd_relay_restrictions = permit_sasl_authenticated permit_mynetworks
defer_unauth_destination smtpd_sasl_auth_enable = да
smtpd_sasl_path = частный/авт
smtpd_sasl_type = голубятня
smtpd_tls_auth_only = да
smtpd_tls_cert_file =/и т.д./SSL /certs/mailserver.pem
smtpd_tls_key_file =/etc/ssl/private/mailserver.PEM
smtpd_tls_security_level =
могут smtpd_tls_session_cache_database = ВТКЕЕ: $ {data_directory}/smtpd_scache
smtpd_use_tls = да
transport_maps = хэш:/и т.д./постфикса/транспорт
virtual_alias_maps = MySQL:/и т.д./постфикса/MySQL-virtual- alias-maps.cf
virtual_mailbox_domains = MySQL:/и т.д./постфикса/MySQL-виртуальной mailbox-
domains.cf virtual_mailbox_maps = MySQL: /etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = Dovecot

в/и т.д./постфиксе/транспорте [email protected] PHP_SCRIPT

кажется постфикс просто игнорировать transport_map, я всегда получаю неизвестный пользователь в виртуальной таблице почтовых ящиков. Что правильно, такого пользователя нет, но я хочу переслать почту через transport_maps перед проверкой, есть ли виртуальный пользователь.

Любой может помочь? Проведите двухдневный поиск, читая человека и пытаясь, но похоже, что это просто не работает.

ответ

5

Ok я получил решение:

Кажется постфикса не работает с обоими virtual_transport и transport_maps, так что я создал в virual_aliases форварда на Foo @ локальный, а затем я использую transport_maps файл для трубы Foo @ lokalny_host к скрипт :)

+0

Молодцы. Вы должны принять свой собственный ответ. Вы сделали мой день. – redochka

+0

Это утверждение неверно. Я обнаружил, что когда я пытался [играть с mailman3 и postfix] (http://serverfault.com/questions/733304/getting-mailman3-to-play-nicely-with-postfix-and-dovecot). Фактически это параметр 'virtual_mailbox_maps', который не позволяет postfix обращаться к параметру' transport_maps'. –

0

Мое решение для записи,

Создать специфический транспорт:

# 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 
[email protected] 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 
Смежные вопросы