[Карта]                [Начало]                [Sendmail-ссылки]                [Синтаксис]                [Типовые задачки]                  [Задачки по маршрутизации]                  [Задачки по маcкарадингу]                  [SendmailACL]                  [Spamooborona]                  [VadeRetro]                  [Regex]                  [Тонкости]                  [Недок.особен.]                  [Несущ.юзеры]                  [Прячемся!]                  [RFC1893.Цитаты]                  [ТП.Эмоции]                  [Антиспам&Разум]                  [Экзерсисы]                 


Задачки по маcкарадингу.


  • 1. Теория.
  • 2. Reserved
  • 3. Reserved
  • 4.Задачки.
  • 4.1. Как изменить адрес оправителя в зависимости от адреса получателя.
  • 4.2. Как изменить реквизиты оправителя в поле From в зависимости от зоны домена получателя.
  • 4.3. Подмена адреса отправителя в транзитной почте.
  • 4.4.
  • 4.1.
  • 4.1.


  • 1. Теория.

    Некоторые относящиеся к теме опции.
    FEATURE(always_add_domain)dnl
    FEATURE(allmasquerade)dnl
    MASQUERADE_AS(`domain.ru')dnl
    FEATURE(masquerade_envelope)dnl
    FEATURE(masquerade_entire_domain)dnl
    MASQUERADE_DOMAIN(`host1.domain.ru')dnl


    4. Задачки.
    4.1. Как изменить адрес оправителя в зависимости от адреса получателя.

    Описано здесь - FAQ: Other often asked questions about sendmail . Нужно будет создать дополнительный mailer.

    4.2. Как изменить реквизиты оправителя в поле From в зависимости от зоны домена получателя.

    01.03.209. Задача в полной мере отражает российский менталитет в плане желания прогнуться под Запад с одной стороны, и неприятия латиницы старшим поколением с другой стороны, ну да ладно ... Хотя грустно от того, что из-за детских комплексов взрослых людей админам приходится мучиться ...

    Итак, руководство одной фирмы рефлексирует по поводу предполагаемого неадекватного восприятия кириллицы в поле From: зарубежными партнерами. То есть вот такой
    From: Васисуалий Иванович Лоханкин < vasya@super-muper-company-horns-and-hooves.ru >
    на том конце света предстанет перед нерусскоговорящим получателем скорее всего в таком виде
    С_т_р_а_ш_н_ы_е__к_р_а_к_о_з_я_б_р_ы < vasya@super-muper-company-horns-and-hooves.ru >.
    Завидев такой "ужас, летящий на крыльях летучей мыши TheBat!", предполагаемый визави отпрянет от экрана, картинно прикрыв глаза рукой (совсем как в фильмах немого кино), и предпочтет не иметь дело с таким страшным партнером, переключившись на что-то более удобоваримое, все из себя латинистое, понятное и потому прекрасное.

    Как и следовало ожидать от такого руководства, указание своих реквизитов в поле From: изначально латиницей неприемлемо еще больше нежели кириллица в From: в письмах зарубежному партнеру. Оно и понятно: получив письмо с latin Full Name в поле From: российский партнер со схожими рефлексами неприятно подивится еще больше и скажет, а чтой-то наш разлюбезный Васисуалий Иваныч совсем загордился и на аглицкий манер начал представляться? Никак от Родины отрекся? И к якобинцам примкнул? И сбежать решил? Да с казною? Да он же НЕБЛАГОНАДЕЖНЫЙ! Инакомыслящий! Да надо срочную депешу отправить ... Президенту? ... Неее ... Премьер-министру? ... Не ... Во! Передаче "Человек и закон" ! Самому ПИМАНОВУ!!! Ну тут еще много чего можно напридумывать, благо, что Гоголь, Лесков, Салтыков-Щедрин и Чехов немало про такую категорию людей писали. Все знакомо, и печально, что ничего не меняется ...

    Ну, вы уже поняли задачу. Full Name часть поля From: в письмах от определенной группы людей должна меняться с кириллицы на латиницу, если письмо отправляется по любому не ru-адресу.
    Сначала мне эта задачка не показалась сложной. В sendmail.cf имеется рулсет MasqHdr, на который и предполагалось возложить эту задачку. Но оказалось, что этот рулсет работает исключительно с адресом апользователя. То есть на вход подается уже освобожденный от Full Name (если он был) заголовок From.
    Тогда я стала обдумывать решение с.п. LOCAL_RULE_0 по следующей схеме:
    письмо от определенной группы юзеров и для доменов вне зоны ru должно заворачиваться в локальный ящик, а далее на этапе локальной доставки должен подключиться procmail, заменить в этом письме заголовок From в части Full Name c кириллицы на латиницу (опираясь при замене не на сам кириллический Full Name, а на e-mail отправителя,), после чего отправить письмо по назначению.

    Первый минус этого решения в возможном использовании отправителем Bcc. В этом случае невозможно будет выцепить заголовок To: или Сс: Тут я вижу единственный выход - запретить в рулсете CheckTo этой группе юзеров письма с отсутствующими To: или Сс: для доменов вне зоны ru.
    Другая проблема - многочисленные получатели письма в заголовках To: и Сс:. Когда такое письмо попадет procmail'у, он, переписав заголовок From, отправит письмо всем персонам, указанным в To: и Сс:, причем столько раз, сколько иностранных персон окажется в этом списке.
    Обойти этот момент можно, если добавить в заголовок письма дополнительный заголовок, в котором будет обозначен истинный получатель этого письма, и указать procmail'у, что получателем будет адрес именно из этого заголовка. Тогда и проблема с Bcc будет решена. Это я пока не пробовала, это только предположение. Хотя при таком раскладе сам смысл Bcc пропадает, потому что секретный получатель будет засвечен.

    Обратившись за комментариями к sendmail-гуру, я получила в ответ рекомендацию использовать MIMEDefang. И удивление по поводу того, что я нашла приличным использовать для этой задачи сам sendmail.cf. Ну я знаю, что sendmail-гуру частенько повторяют, что sendmail - это mail router, у него и без того забот хватает, и заставлять его заниматься извратами - очень неприлично.
    На это я могла бы возразить только одно. Насколько я понимаю, вот этой "неприличной" работы в данной задаче будет немного. Ну может, за неделю отправляется одно-два письма зарубежному партнеру от рефлексирующего руководства. И из-за двух писем подключать MIMEDefang я бы не стала вот по этой причине. Я теперь при решении задач задумываюсь над затратами и оптимизацией, и лично меня совсем не устраивает тот факт, что MIMEDefang будет дергаться на каждом этапе каждого smtp-диалога, хотя мне в этой задаче нужен всего лишь разбор заголовка "To:" 2-3 раза в неделю.
    А вот описание соответствующей функции. Жду от автора задачи подробного отчета.
    Mickey Hill. The MIMEDefang HOWTO.
    9.2 Functions
    action_change_header($hdr, $val, $index) - Changes an existing header in the message.
    This can be used in filter_begin or filter_end. The $hdr parameter is the header name without the colon, and $val is the header value. If the header does not exist, then a header with the given name and value is added. The $index parameter is optional; it defaults to 1. If you supply it, then the $index'th occurrence of the header is changed, if there is more than one header with the same name. (This is common with the Received: header, for example.)

    P.S. Хотя "История не имеет сослагательного наклонения", но все же позволю себе пофантазировать ...
    Если бы не бесконечный террор на территории российского государства по отношению к своему народу, а также бесчисленные глобальные и локальные войны, а также очччень вредные российские привычки, кто знает, может быть, сегодня человечество налегало совсем не на английский, китайский и арабский языки ... Совсем ... Имхо, к этому были предпосылки ... А если еще вспомнить известный афоризм "Россия так долго игнорировала кибернетику, что та еще не скоро заговорит по-русски" (когда-то в России кибернетику называли лженаукой), то при первом фантастическом языковом раскладе и втором фантастическом своевременном кибернетическом раскладе жить носителям русского языка было бы гораздо интереснее. И сейчас бы над этой задачкой ломал голову не админ Петя Иванов, а админ совсем на другом конце земли, переиначивая имя своего шефа в Full Name, скажем, из Basil John Smith в Василия Ивановича Кузнецова ... И то только в том случае, если бы у его шефа были такие же вековые комплексы, как и у героев этого рассказа.


    4.3. Подмена адреса отправителя в транзитной почте.

    Автор задачи и решения - Ливитин С.Ю.
    Дано:
    1. MSExchange -> Sendmail -> Hello, world!
    2. На MSE 2 группы юзеров по 5 человек.
    Требуется, чтобы транзитный релей (sendmail) менял адрес отправителя в почте от MSE так, чтобы почта от первой группы была подписана адресом sale@dovestai.it, а почта от второй группы - manager@dovestai.it

    GENERICS_DOMAIN(`dovestai.it')dnl
    FEATURE(masquerade_envelope)dnl
    FEATURE(genericstable, `hash -o /etc/mail/genericstable')dnl ...
    в /etc/mail/genericstable :
    user1@dovestai.it [TAB] sale@dovestai.it
    user2@dovestai.it [TAB] sale@dovestai.it
    ...
    user6@dovestai.it [TAB] manager@dovestai.it
    user7@dovestai.it [TAB] manager@dovestai.it
    ...
    Замечу от себя, что genericstable работает только с нелокальными доменами.
    http://www.opennet.ru/openforum/vsluhforumID1/83366.html











    Обратная связь
    Страница создана 28 февраля 2009г. Последнее обновление - 2 марта 2009г.