Postfix принимает почту на определенном порту

Postfix принимает почту на определенном порту

У нас есть несколько клиентов, которые отправляют почту через наш почтовый сервер. Для пакетной отправки почты мы перенаправляем всю почту на определенный порт (в данном случае 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

Связанный контент