LINUX.ORG.RU
ФорумAdmin

sendmail.cf + перезапись заголовков


0

0

Hi all !
Вопрос такой:
как в sendmail-е замутить перезапись заголовков в нужном виде с применением правил ?
Просто не хочется светить именами и адресами локальных машин в inet-е. Надо анализировать header-ы и если письмо идет снаружи к нам - писать received from (HReceived: ), а если от нас наружу - не писать.
На citforum-е пишут:
> Для включения проверки, используйте:
> HHeader: $>Ruleset
Пробовал так для HReceived, но не работает. Такое впечатление, что sendmail вообще игнорирует такие вещи.
В принципе можно попробовать замутить с "H?что-то?Received" сделать дополнительного почтальона [e]smtp (копию существующего) и сказать ему F=что-то, но тогда придется лазить по всему конфигу и в некоторых местах менять [e]smtp на my_smtp + писать дополнительные правила... По-моему это большой геморой :-)
Нельзя ли просто "HHeader: $>Ruleset" или вообще по-другому ?
sendmail 8.11.6
Z0termaNN, help :-)

★★★★★

нет, sendmail не игнорирует правила вставки заголовков в тело сообщения.
проблема заключается в том, что Recieved вставляется всегда, в отличии
от остальных заголовков, на каждом хопе. Я здесь вижу 2 варианта
наименее геморройного решения проблемы:

1. использовать checkcompat()
2. использовать milter api.

хотя это применимо только если :

в случае 1 есть доступ к исходникам,
в случае 2 sendmail либо построен с milter api, либо есть доступ к
исходникам.
Т.е., например если у тебя солярис и тебе требуются сановские расширения,
то придется искать другое решение.
По моему мнению лучше использовать milter.
Если захочешь использовать checkcompat(), то могу выслать пример и
описание передаваемых структур.

Z0termaNN
()

> проблема заключается в том, что Recieved вставляется всегда,
> в отличии от остальных заголовков, на каждом хопе

Так именно в чем же она заключается ? :-) Я не против этих заголовков, мне нужно не писать его только в случае получения письма с локального компа, если оно идет наружу, чтоб для внешнего мира создавалось впечатление, что вся исходящая почта была с самого начала отправлена с сервера, чтоб не было видно пути писем до сервера. И все. Во всех остальных случаях (получение почты извне, пересылка внутри локальной сети) заголовки мне не мешают.

Sendmail построен с поддержкой Milter API (на нем крутится drweb sendmail filter), OS - RedHat Linux.

P.S. К моему сожалению я не C-программер :-( , поэтому мне было бы проще обходиться, например, только правилами sendmail.cf.

spirit ★★★★★
() автор топика

Русским языком же написано: на КАЖДОМ ХОПЕ Received добавляется.
Управлять можно только содержимым заголовка. Подстановка правил
невозможна, можно только оперировать макросами. Условный оператор
проверяет только определен ли макрос, хотя возможны вложенные if-else.

А что касается milter, то писать можно и не перле и на питоне.

Z0termaNN
()

> Русским языком же написано: на КАЖДОМ ХОПЕ Received добавляется.

Ну и пусть себе добавляется :-) Мне надо только чтоб sendmail не рисовал его на стадии приема письма, если оно идет изнутри наружу. Все заголовки, которые были перед этим и будут после этого меня не волнуют. Точнее у меня их просто нет (тех, что "были"), если шлем наружу - стоит 1 общий почтовый обменник.

> Подстановка правил невозможна, можно только оперировать макросами.

А ты ж говорил, что "sendmail не игнорирует правила вставки заголовков в тело сообщения" на счет HHeader: $>Ruleset

> А что касается milter, то писать можно и не перле и на питоне.

Вот на perl-е - это было бы не плохо...
Только я не совсем понимаю что именно должен будет делать мой фильтр ? Ведь те заголовки, которые сделаны до (или после) моего sendmail-а мне по барабану. Зато мой sendmail, насколько я понимаю, дорисует Received: после прохождения через фильтр (чего-то на счет OUTPUT_MAIL_FILTER в README.libmilter я не нашел, там только одни INPUT_...).

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