
У нас есть несколько клиентов, которые отправляют почту через наш почтовый сервер. Для пакетной отправки почты мы перенаправляем всю почту на определенный порт (в данном случае 1025) в скрипт приема, который сохраняет данные в MySQL для пакетной обработки. Когда я тестирую это, это работает отлично, когда клиент тестирует это, это работает отлично, однако, когда они отправляют из своей системы Unica, похоже, что почта проходит прямо мимо скрипта и попадает в почтовый поток. Возможно ли это?
Вот строки из master.cf
000.000.000.000:1025 inet n - - - 0 smtpd
-o mynetworks=hash:/etc/postfix/injector/networks
-o content_filter=clientid:
-o syslog_name=clientid
-o smtpd_timeout=1800s
clientid unix - n n - 0 pipe
flags=q user=filter argv=/var/injector/inject.php clntid
Любая помощь приветствуется!
Спасибо!
решение1
Чтобы диагностировать проблему, вам сначала нужно начать собирать больше данных. Вы можете использовать параметры debug_peer_level и debug_peer_list в /etc/postfix/main.cf.
например
debug_peer_list=IP-АДРЕС.СЕРВЕРА.UNICA уровень_отладки_peer_level=2
(еще больше увеличьте уровень отладки, если это не дает достаточно информации)
как только вы получите эти данные, вы сможете точно сказать, попадает ли почта из системы Unica на ваш пользовательский фильтр или нет (и похоже, что это не так)
решение2
SMTP проходит через порт 25 (это стандарт), поэтому, когда ваш клиент отправляет через систему Unica, он отправляет на этот порт. С вашей стороны, процесс smtpd, прослушивающий порт 25, ничего не знает о скрипте inject.php.
Ваш клиент должен отправлять через систему, которая знает об использовании вами нестандартного порта, будь то MTA (SMTP-сервер) или обычный почтовый клиент. Или вам придется перепроектировать свою настройку.
Да, вы можете удалить адрес (см. man 5 master
).
Чтобы немного прояснить ситуацию, поскольку мы не видим полностью вашу конфигурацию, возможно, вы сможете получить то, что хотите (не проверено). Если ваш клиент или что-то еще не отправляет почту на ваш порт 1025, то, по-видимому, вы можете маршрутизировать его почту на основе адреса отправителя или домена.
/etc/postfix/main.cf:
sender_dependent_relayhost_maps = /etc/postfix/my_special_client
/etc/postfix/my_special_client:
@example.com 127.0.0.1:1025
# postmap /etc/postfix/my_special_client
# postfix stop && postfix start
решение3
Для действительно детальной отладки я иногда делаю tcpdump и переношу его обратно в ethereal, чтобы проверить точный SMTP-сеанс, который имел место.
tcpdump -i any -s 1500 -w /tmp/some-file.dump host ip.of.your.client