Назад | Перейти на главную страницу

8-битная кодировка для печати с кавычками в Exim

Возможно ли и как настроить почтовый сервер Exim4 для преобразования исходящих сообщений (или частей сообщений) из 8-битной кодировки в Quoted-Printable (или Base64, хотя я бы предпочел QP), прежде чем подписывать их с помощью DKIM и передавать их ?

В настоящее время у нас есть установка, при которой сообщения, содержащие 8-битные части, получают недопустимую подпись DKIM при поступлении на целевой сервер, поскольку они конвертируются вышестоящим сервером (который мы не контролируем) в Quoted-Printable. К сожалению, мы не можем жаловаться на поведение вышестоящего сервера, потому что RFC4871 четко указывает, что именно подписывающий сервер должен перекодировать почту в соответствующей кодировке перед подписью (см. RFC4871, раздел 5.3):

Чтобы свести к минимуму вероятность такого нарушения, подписывающим сторонам СЛЕДУЕТ преобразовать сообщение в подходящую кодировку передачи содержимого MIME, такую ​​как quoted-printable или base64, как описано в части первой MIME [RFC2045] перед подписанием.

Поэтому я ожидал, что это преобразование будет базовой функцией любого почтового сервера, поддерживающего DKIM, но, насколько я искал в руководствах по exim, ничего подобного нет. Есть ли какое-нибудь известное решение этой проблемы?

В настоящее время я нашел решение использовать reformime команда, поставляемая с maildrop инструмент, используя -r7 вариант, как транспортный фильтр eximʻa.

однажды maildrop установлен, достаточно настроить транспортный фильтр на транспорте (ах) SMTP, используемом Exim для передачи почты на серверы назначения:

remote_smtp_smarthost:
  debug_print = "T: remote_smtp_smarthost for $local_part@$domain"
  driver = smtp
# filter outgoing messages to convert 8-bit to Quoted-Printable when needed
  transport_filter = /usr/bin/reformime -r7

В нашем случае это был 30_exim4-config_remote_smtp_smarthost config, поскольку мы используем smarthost, для более стандартных серверов без smarthost это будет 30_exim4-config_remote_smtp; вам также может потребоваться изменить другие транспорты в зависимости от конкретной конфигурации, которую вы используете.

reformime - это небольшой инструмент, написанный на чистом C, поэтому он очень легкий и добавляет небольшие накладные расходы на обработку почты. Однако, похоже, необходимо буферизовать все передаваемое сообщение в памяти для обработки, поэтому будьте осторожны, если у вас очень загруженный сервер с небольшим объемом доступной оперативной памяти.