LINUX.ORG.RU
ФорумAdmin

Помогите скрестить postgrey и altermime в postfix


0

1

Вернее понять синтаксис как и что писать в master.cf, чтоб эти два механизма работали. По отдельности все работает нормально. Никакой внятной документации по синтаксису master.cf найти не могу. Какой то непонятный мне птичий язык.

И так postgrey запуск и работу прописано много лет в main.cf так:

smtpd_recipient_restriction=

.....................

check_polycy_service inet:127.0.0.1:10023

Для запуска же altermime в документации советуют:

smtp inet n - - - - smtpd -o content_filter=dfilt:

в конец файла добавляем:

dfilt unix - n n - - pipe flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} — ${recipient}

По отдельности все ОК но вместе что то не нравится, зацикливается, почта перестает работать.

Есть тут спецы? Поясните что надо сделать чтоб оба механизма работали одновременно.

Спасибо.

Постфикс весь из себя модульный, и master.cf описывает какие модули, в каком количестве и каким образом запустить. Отличная дока по формату - «man 5 master». Вот тут вкратце расписано как устроен постфикс, что даст тебе представление зачем нужен этот master.cf. Очень полезный документ.

altermime предполагает работу в качестве after-queue фильтра. Это значит, что после того, как письмо попало в очередь, оно отдается наружу некоему процессу, который может это письмо проанализировать и, при необходимости, передать обратно постфиксу при помощи команды sendmail (а может и потерять, например). Этот ацкий механизм объясняется тут. За что люблю постфикс - это за очень подробную и внятную документацию.

Что касается твоей конкретной проблемы, все должно быть пучком, ибо smtpd_recipient_restriction срабатывает когда «получалка» писем smtpd(8) получает от клиента «rcpt to», что абсолютно ортогонально контент-фильтру, в который письма сливает «отправлялка» smtp(8), а шлимыло засовывает это письмо обратно через pickup(8) вместо smtpd(8).

Посмотри, точно ли altermime работает нормально при отключенном полиси?

Надеюсь, опечатка в check_polycy_service в конфиге отсутствует?

alex_the_v
()

Ну, покажи что ли конфиги через какой-нибудь pastebin, чтобы ЛОРовское автоформатирование буковки там не корежило, а то непонятно что у тебя в конфигах, собственно, написано.

alex_the_v
()
Ответ на: комментарий от alex_the_v

Извините, я погорячился, отключил полиси

и не работает altermime, в конфиге опечатки конечно нет.

Не нравится что то в скрипте, видимо из за версии postfix, опробовал на внутреннем 2.8.10, а рабочий почтовик старенький стоит 2.1.5

Ругань:

sendmail[1071]: r7C2p5Ze001071: Authentication-Warning:mail.domaine.ru: filter set sender to MAILER-DAEMON@mail.domaine.ru using -f

не понял что есть такое pastebin и с чем его едят. Правила форматирования на LOR тоже не нашел.

Не может видимо вернуть почту сендмайл, хотя на другом почтовике работает как часы. Ума не приложу пока куда ему вставить -f

Вообще хотелось бы почту как то обрабатывать, и механизм altermime, мне показался достаточно наглядным, хотел прикрутить его, но скрипт наваять свой ( хотя ваяльшик я тоже еще тот). Задача вроде бы не сложная, но не представляя кто как куда передает и возвращает или теряет... Нужно письма от определенного адресата к определенному получателю, просто терять. Ну и хотелось бы конечно все таки рассосать какие процессы для чего и как взаимодействуют, а то много чего прикручивал не особо понимая как работает.

За ссылки спасибо, хотя с англицким у меня не все в порядке, буду напрягать translate.google.com

Спасибо что откликнулись.

alex_sim
() автор топика
Ответ на: Извините, я погорячился, отключил полиси от alex_sim

/etc/postfix/disclaimer - это шелл-скрипт, который читает письмо от постфикса через пайп, обрабатывает его бинарником altermime, после чего с помощью сендмейла возвращает обратно в постфикс. Ругается постфикс на то, что этот скрипт вызвает шлимыло с ключом -f, каковой переписывает сендера. Но проблема, видимо, не в этом, т.к. это - только варнинг.

Попробуй убрать в скрипте /etc/postfix/disclaimer все ключи в вызове сендмейла и оставь только -G и -i.

Внимательно посмотри в логе постфикса срабатывает ли pickup, которому сендмейл передает письмо, и что этот pickup говорит. Попробуй запустить скрипт /etc/postfix/disclaimer руками, скормив ему письмо с stdin. Можно вызов сендмейла закомментировать, а вместо этого вывести результат на экран. Текст варнинга наводит на мысли, что альтермайм что-то не то делает с письмом. Но это подозрение опровергается тем, что на другом постфиксе все как часы работает.

Постфикс - очень гибкая штука. Это дает возможность вытворять с его помощью такие извращения, что волосы на руках дыбом становятся. Но иногда удивляет реализация. Например, тот же after-queue-фильтр юзает сендмейл, чтобы вернуть письмо в самое начало процесса обработки, вместо того, чтобы закинуть его в ту же точку, из которой оно было получено. Видимо, для автора красота архитектуры была на первом месте. В Exim ситуация абсолютно обратная. Экзим достаточно уродлив, там все прибито гвоздями, но пользоваться им - одно удовольствие.

Эти скрипты для фильтрации, для полиси и прочей байды можно клепать самому по примерам, тут ничего сложного нет.

буду напрягать translate.google.com

Я где-то напарывался на русскую доку, но не помню где именно.

Спасибо что откликнулись.

Спасибо на добром слове =)

alex_the_v
()
Ответ на: комментарий от alex_the_v

В вызове sendmail не было никаких ключей,

я добавил -G и -i но мой postfix еще не знает ключа -G (старенький видимо) ключ -i ничего не изменил к лучшему.

А почему sendmail передает pickup?

dfilt unix - n n - - pipe flags=Rq user=filter argv=/etc/postfix/disclaimer -f ${sender} — ${recipient}

Вроде pipe... положение усложняется тем, что толком покрутить то его не могу, почтовик рабочий. как только я сую attermime в конфиге почта перестает ходить. что то где то зациливается.

554 5.4.6 Too many hops 27 (25 max): from MAILER-DAEMON@

alex_sim
() автор топика
Ответ на: В вызове sendmail не было никаких ключей, от alex_sim

Через пайп smtp(8) передает письмо скрипту /etc/postfix/disclaimer. Скрипт пропускает письмо через altermime, который изменяет письмо. Затем письмо отдается sendmail, который кидает его в maildrop, откуда оно забирается pickup(8).

Зацикливается. Попробуй сгенерить тестовое письмо в текстовом файле и запустить скрипт вручную:

cat mail.txt | /etc/postfix/disclaimer -f test1@example.com -- test2@example.com

alex_the_v
()
Ответ на: комментарий от alex_the_v

поменял -o content_filter=dfilt:empty

почта ходит нормально, ничего не циклится но такое ощущение что управление скрипту не передается. В логах.

postfix/pipe[4813]: 7765EB4D812: to=<solova@mail.ru>, relay=dfilt, delay=0, status=sent (empty)

alex_sim
() автор топика
Ответ на: А в ручную скрипт прекрасно отработал! от alex_sim

Перепроверил все права на директории,

в скрипте указал везде явно sendmaul.postfix все вроде заработало. Большое спасибо за помошь. Теперь надо думать как скрипт наваять, чтоб письма от определенного адресата (робота) к определенным адресатам не доходили те просто терялись.

alex_sim
() автор топика
Ответ на: комментарий от alex_the_v

По аналогии с altermime написал скрипт и обкатал его на внутреннем почтовике

который не выходит «в мир» а только релеит во внутренней сетке рабочему почтовику. Перенес на рабочий почтовик и засада.

Что то зацикливается и почта вообще перестает ходить. MAILER-DAEMON заваливает сообшениями

from filter@localhost ..... 554 5.4.6 Too many hops 27 (25 max): from

Подскажите куда копать? master.cf у обоих одинаков, только e рабочего postfix версия старенькая.

alex_sim
() автор топика
3 июля 2015 г.

привет

у меня такая же проблема. расскажи по подробней как ты решил эту проблему

alexz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.