Отправка почты Sendmail / procmail / Exchange

Уровень просвещения коллеги, чтобы найти образец в этом, спас меня от новой глубины безумия. Я надеюсь, что доверие к мозгу здесь может теперь сказать мне, почему …

Сцена: у нас есть несколько общих идентификаторов почты с настройкой procmail для перераспределения почты на основе исходного получателя. Например, почта, отправленная в generic_ID1, отправляется в staff1, staff2; mail для generic_ID2 поступает на staff3, staff4; и так далее …

GENERIC_ID1_RECIPIENTS="staff1@domain,staff2@domain" :0 * ^TO.*generic_ID1 ! $GENERIC_ID1_RECIPIENTS 

Проблема: почта усекалась, казалось бы, случайным образом. Наконец, найденный образец показал, что это произошло, когда предложение закончилось периодом в столбце 76 и возвратом жесткой каретки: не в столбце 75 или 77; а не в колонке 76 с дополнительным текстом для этой же строки. Любой текст, следующий за этим периодом, был утрачен.

Добавление: мы только что увидели, что он повторяет (и воспроизводит его) с периодом в столбце 226. Я расшатался.

Я могу подтвердить, что procmail получает сообщение целиком, копируя сообщение перед повторной доставкой:

 :0c # note: 'c' * ^TO.*generic_ID1 ! $GENERIC_ID1_RECIPIENTS 

Я считаю, что sendmail может обрезать его при повторной доставке, но я не уверен, как диагностировать или доказывать это (я не администратор sendmail, а просто пользователь procmail).

Проблема полностью воспроизводима.

Вопросы: Почему это происходит и как я могу это исправить?

Большое спасибо.

EDIT: Обновлен заголовок и теги. Решение находится в комментариях.

  • Как настроить sendmail.postfix для ретрансляции на Exchange 2010?
  • почты, помеченные как спам
  • Сделать sendmail электронной почтой на SYSERR-ошибках
  • Могу ли я отправлять электронную почту в фоновом режиме в Mutt, но при этом уведомляются об ошибках?
  • Как отправить нелокальную почту с помощью SMTP GMail (GApps)?
  • NOQUEUE: SYSERR (root): opendaemonsocket: daemon MTA: сервер SMTP-разъем клин: выход
  • Тело нулевого сообщения; надеюсь, что все в порядке
  • Как отправить сырое сообщение в Linux?
  • One Solution collect form web for “Отправка почты Sendmail / procmail / Exchange”

    (Преобразован из комментариев вопроса)

    На это было три части: sendmail, procmail и Exchange:

    • Exchange : при приеме части письма для доставки она, похоже, переформатирует текстовое сообщение, кодируя и обертывая его строки до 75 символов.

    • sendmail : Старое (но известное) поведение соблюдалось в том, что почта с открытым периодом в строке была интерпретирована как конец сообщения, а затем доставлена, эффективно обрезая фактический почтовый ящик.

    • procmail : Согласно документам, он должен вызывать sendmail с флагами, которые заставляют его игнорировать голые периоды. Он не делал этого и не соблюдал явные директивы конфигурационного файла. Кратковременное решение: передача -oi -OIgnoreDots = T ко всем рецептам повторной доставки. Долгосрочное решение: обновление установки procmail на нашем сайте, которая теперь соблюдает настройки конфигурации и игнорирует голый период (переданные флаги больше не требуются).

    Жесткая упаковка вступила в игру, потому что, когда Exchange закодировал ранее распространенное текстовое сообщение, оно ввело =20 что, вероятно, позволило периоду быть завернутым самим собой и оставлено в одиночестве на линии.

    Linux и Unix - лучшая ОС в мире.