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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.