[Comm] Re: SASL & PAM

Alexander Leschinsky =?iso-8859-1?q?byyjrtnybq_=CE=C1_ural=2Eru?=
Пн Фев 9 15:07:02 MSK 2004


Hello Michael,

   On Sat, 7 Feb 2004 22:11:33 +0200 (08.02.2004 01:11 my local time)
   you wrote about "[Comm] Re: SASL & PAM"
   at least in part:

MS> Взрослые пацаны
^Y

Взрослые пацаны смотрят на сущность, а не на форму, и не устраивают
истерик, как нервные институтки...
Что сильно изменится в моем утверждении "Postfix есть MTA с ограниченной
функциональностью", если бы я для ответа пересел на стул слева
(mutt+postfix) или справа (pine + sendmail) ???

MS> Мифологией занимаются в talk-room@, а не здесь.  Здесь принято
MS> аргументировать.
Благородный дон желает услышать обоснование широкоизвестных (как мне
казалось) фактов? Или они для него в новинку? Легко...

1. Postfix не поддерживает DSN
2. Postfix не умет обрабатывать более одного хидера одновременно, из чего
напрямую следует, что более-менее сложную проверку вливаемых данных он
провести не может - я с удовольствием посмотрю на аналог например этого
----->8-------------------------------------- from WinClipboard
divert(-1)
#
# Check broken charset
#
dnl # отвергать письма:
dnl # 1. Content-Type: text/(html|plain); charset="(Windows-1251|koi8-r)"
dnl #   Content-Transfer-Encoding: 7bit
dnl # 2. Content-Type: text/(html|plain); charset="(Windows-1251|koi8-r)"
dnl #   без Content-Transfer-Encoding вообще
dnl #
dnl # для исключения из проверки писем, созданных в определенных MUA:
dnl # HACK(`check_transfer_encoding', `My.Cool.Mailer')
dnl #
dnl # для использования определенных сообщений об ошибке в зависимости от MUA:
dnl # HACK(`check_transfer_encoding', `PocoMail', `Ask PocoMail author fix the lame encoding definition')
dnl #
dnl # MUA следует указывать в токенизированной форме
dnl # при это не требуется указание полного названия, нужно лишь начало
dnl #
ifdef(`_CHECK_TRANSFER_ENCODING_', `dnl', `dnl
divert(0)
VERSIONID(`$Id: check_transfer_encoding.m4,v 8.12-05 2003/09/20 18:58:39 corvax Exp $')dnl
divert(-1)
dnl
define(`_CHECK_TRANSFER_ENCODING_')dnl
dnl
dnl
LOCAL_CONFIG
dnl
dnl
Kstorage_broken_charset macro
dnl
C{CYR_CHARSETS}koi8-r windows-1251 iso-8859-5
C{CYR_CHARSETS_QUOTED}"koi8-r" "windows-1251" "iso-8859-5"
dnl
dnl
LOCAL_RULESETS
dnl
dnl
SLocal_check_mail
# Clear the macro for the next message
R $*                    $: $(storage_broken_charset {Header_Content_Type} $) $1
R $*                    $: $(storage_broken_charset {Header_Content_TransEnc} $) $1

HContent-Type: $>+Check_Content_Type
dnl
SCheck_Content_Type
R $*                    $: $(storage_broken_charset {Header_Content_Type} $@ $1 $) $1

HContent-Transfer-Encoding: $>+Check_Content_Transfer_Encoding
dnl
SCheck_Content_Transfer_Encoding
R $*                    $: $(storage_broken_charset {Header_Content_TransEnc} $@ $1 $) $1

dnl
Scheck_eoh
# Check the macro
R $*                    $: $1 $| $&{Header_Content_Type} $| $&{Header_Content_TransEnc}
dnl
ifelse_strstr(confCHECK_TRANSFER_ENCODING, `8BIT', `dnl
R $* $| $* $={CYR_CHARSETS_QUOTED} $* $| 7bit       $: $1 $| WRONG
R $* $| $* $={CYR_CHARSETS} $* $| 7bit              $: $1 $| WRONG
')
dnl
ifelse_strstr(confCHECK_TRANSFER_ENCODING, `EXIST', `dnl
R $* $| $* $={CYR_CHARSETS_QUOTED} $* $|            $: $1 $| WRONG
R $* $| $* $={CYR_CHARSETS} $* $|                   $: $1 $| WRONG
')
dnl
R $* $| WRONG           $: $1 $| WRONG $| $>check_encoding_by_mailer $&{Header_X_Mailer} $| " wrong charset/encoding definition"
R $* $| WRONG $| $#$*   $#$2
R $* $| WRONG $| SKIP   $: $1
R $* $| WRONG $| $*     $#error 5.7.1. $: "554 wrong charset/encoding definition"
R $* $| $*              $: $1

Scheck_encoding_by_mailer
')dnl
dnl
ifelse(len(X`'_ARG_),`1',`dnl', `dnl
dnl
dnl
LOCAL_RULESETS
dnl
dnl
ifdef(`_CHECK_TRANSFER_ENCODING_MAILER_', `dnl', `dnl
dnl
define(`_CHECK_TRANSFER_ENCODING_MAILER_')dnl
dnl
SLocal_check_mail
# Clear the macro for the next message
R $*                    $: $(storage_check_mailer {Header_X_Mailer} $) $1

HX-Mailer: $>+Check_X_Mailer
HX-Server: $>+Check_X_Mailer
HX-mail-agent: $>+Check_X_Mailer
HX-Newsreader: $>+Check_X_Mailer
HUser-Agent: $>+Check_X_Mailer
dnl
SCheck_X_Mailer
R $*                    $: $(storage_check_mailer {Header_X_Mailer} $@ $1 $) $1
')
dnl
Scheck_encoding_by_mailer
ifelse(len(X`'_ARG2_), `1', `dnl
R _ARG_ $* $| $*        $@ SKIP
', `dnl
R _ARG_ $* $| $*        $#error 5.7.1. $: 554 _ARG2_
R _ARG_ $* $| $+        $#error 5.7.1. $: 554 $2
')
')

----->8--------------------------------------------------------
3. Очень подробно, избавив меня от необходимости повторять за ним :-), о
недостатках postfix писал netch

http://groups.google.com/groups?hl=ru&lr=lang_en|lang_ru&ie=UTF-8&oe=UTF-8&selm=b6gtrm%2453i%241%40noir.crocodile.org
http://groups.google.com/groups?hl=ru&lr=&ie=UTF-8&oe=UTF-8&selm=20030402143556.GX4404%40segfault.kiev.ua
http://groups.google.com/groups?hl=ru&lr=&ie=UTF-8&oe=UTF-8&selm=b6i6h8%24pfh%243%40noir.crocodile.org

из того, что нашлось в мыле
----->8-------------------------------------- from WinClipboard
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
From: Valentin Nechayev <netch@*>
To: Serge Negodyuck <petr@*>
Date: Tue, 30 Sep 2003 12:51:31 +0300
Subject: Re: [freebsd] Sendmail vs postfix vs exim.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

 Tue, Sep 30, 2003 at 12:18:41, petr wrote about "[freebsd] Sendmail vs postfix
vs exim.": 

> Большая просьба не развивать религиозных войн в ответе на этот вопрос,
> хотя я понимаю что он немного провокационный.
> 
> А вопрос стоит так: какие НЕДОСТАТКИ у
> - postfix по сравнению с sendmail

- Невозможность адекватной отработки адресаций сложнее чем "плоская"
интернетовская, с uucp-styled добавками (например, случаев вида a!b на c,
или ещё лучше a%b!c на d;))). У нас, например, применяется разворот форм имени
UUPC/Ache - "system!domain!user на uucpgate" в user на domain при наличии
соответствия в mailertable - postfix такого не сделает.

- Опять с адресами - отсутствие, как в sendmail's rulesets, автоматического
согласования границ лексем в тестируемом и в образце. Так как RFC822 позволяет
в local part делать что угодно в виде quoted string, возможны ложные
совпадения в случае, например, /*-return\@/. (Хотя вероятность такое
встретить в реальности - миллионные доли.)

- Меньшая гибкость правил настройки. (По сравнению с писанием в .cf, а не
генерацией из .mc.) У postfix'а они линейны, как в ipfw без skipto,
и сделать "для этой подгруппы пользователей проверять ещё один RBL" - фиг.

- Невозможность прямого прослеживания раутинга письма одним запросом и без
тестов (как в случае sendmail -bv). (Говорят, скоро в снапшотах что-то для
этого будет.)

- Проблемы с коннектом на backup MXers при отказе основных на стадии mail from
или rcpt to (например, по недостатку места для приёма большого письма).
Код коннекта перебирая MX'еры проходит все стадии вплоть до ответа на EHLO,
а потом отдаёт готовое соединение. Если этот MXер отказался принять письмо,
на другой не уйдёт.

- Отсутствие milter'а. (По слухам, есть неофициальный патч.)

- Невозможность без хака кода принять голое HELO или EHLO. (Иногда такое
дают виндовые MUA.)

- "Взрывная" отработка очереди. Если есть fallback relay, то порой postfix
вспухает и вваливает на него по одному соединению на письмо, что на большой
очереди - до фига, и может занять все коннекты и загнать машину в однократный
VM thrashing. (Не страшно, но заставляет выть мониторилки и мешает
интерактивной работе.) (Уточнение: проверялось только на nqmgr. qmgr признан
в моих тестах непригодным к работе и не используется.)
smtp_destination_concurrency_limit в этом случае не работает.

- Аналогично, smtp_destination_concurrency_limit применяется из-за
конструкции (*qmgr учитывает домен получателя, а не хост) к домену,
и если много доменов приземляются на одном MXере - его может переполнить.

- Поддержка нескольких очередей вручную (например, выселить письма на XXX
в отдельный каталог на пару дней) требует остановки qmgr'ов, в отличие от
sendmail & exim, где требуется только flock() на файл очереди.
Аналогично, меры типа "вот этих получателей в субочередь 1 и разгребать
каждые 5 минут, а этих - в субочередь 2 и разгребать каждый час" невозможны,
политика для всех одинакова (хотя не столь примитивна как в непатченом
sendmail и не так ужасна как в варианте с queue delay backoffs).

- Бинарный файл очереди требует спецсредств для просмотра и редактирования.

- Нет понимания опций sendmail'а, которые хотят некоторые программы.
Например, старый elm хотел -em, mutt по дефолту хочет -oem, дефолтный rmail
хочет или -p (если поновее) или -oMr и -oMs (если постарее). rmail вообще
надо делать отдельный; дефолтная "затычка" вместо rmail, поставляемая с
postfix'ом, не годится ни на что.

----->8--------------------------------------------------------

Так что в качестве транзитного dumb-релея postfix может и ничего, но для
более серьезных случаев нужны более универсальные MTA (namely - Sendmail
or Exim /скорее 4/)

PS - и человек не просил помочь в выборе MTA, а задал конкретный вопрос
про конкретный, нужный ему MTA

-- 
Best regards,
 Alexander Leschinsky





Подробная информация о списке рассылки community