[exim-conf] поддержка RFC2231 в exim 4.86

Victor Ustugov victor на corvax.kiev.ua
Ср Июл 29 10:11:16 EEST 2015


Victor Ustugov wrote:
> Vlad Shpolyanskiy wrote:
>> Спасибо за апдейт, Виктор, будет чем заняться завтра :)
> 
> не факт, что завтра уже будут пакеты собраны для разных дистрибутивов.
> 
> Сева порт для FreeBSD по идее сделает быстро, тогда и потестирую.

итак, в дереве портов FreeBSD появился порт exim 4.86.

> собирать exim из сырцов или самому допиливать порт особого желания нет
> (я ещё в отпуске).
> 
> при тестировании надо иметь ввиду, что тот же Thunderbird уже много лет
> по дефолту не использует RFC2231 (тогда лет 8-9 назад хватало проблем с
> чтением писем из Thunderbird почтовыми клиентами, которые понятия не
> имели о RFC2231).

потестировал я поддержку RFC2231 в exim 4.86.

оказалось, что в простом случае она работает (есть явное указание
charset и имя файла на столько короткое, что его закодированное значение
помещается в одном атрибуте filename*):


Content-Disposition: attachment;
 filename*=KOI8-R''%C1%C2%D7%2E%74%78%74


если же имя файла длинное или не указан charset, то в $mime_filename
будет либо усеченное значение имени файла, либо оно будет вообще пустое:


Content-Disposition: attachment;
 filename*0*=KOI8-R''%D0%D2%CF%D3%D4%CF%20%CF%DE%C5%CE%D8%20%C4%CC%C9%CE%CE;
 filename*1*=%CF%C5%20%C9%CD%D1%20%D0%D2%C9%D3%CF%C5%C4%C9%CE%C5%CE%CE%CF;
 filename*2*=%C7%CF%20%C6%C1%CA%CC%C1%20%D3%20%CB%C9%D2%C9%CC%CC%C9%DE%C5;
 filename*3*=%D3%CB%C9%CD%C9%20%D3%C9%CD%D7%CF%CC%C1%CD%C9%20%D7%20%C9%CD;
 filename*4*=%C5%CE%C9%2E%74%78%74


Content-Disposition: attachment;
 filename*0="Declaration_for_Exemption_from_deduction_of_defence_contrib_";
 filename*1="15%.doc"


Content-Disposition: attachment;
 filename*0="Letter of Undertaking by Beneficial Owners of registered sha";
 filename*1="res.doc"


при сравнительных тестах штатной поддержки RFC2231 в exim 4.86 и
поддержки RFC2231 в exim 4.85 с моим патчем
https://mta.org.ua/exim-4.83-conf/patches/exim-4.85-rfc2231/patch-src__exim-4.85-rfc2231.patch
у меня обнаружилась проблема при обработке вот таких заголовков:


Content-Disposition: attachment;
 filename*0="Declaration_for_Exemption_from_deduction_of_defence_contrib_";
 filename*1="15%.doc"


Content-Disposition: attachment;
 filename*0="Letter of Undertaking by Beneficial Owners of registered sha";
 filename*1="res.doc"


в этих случаях в значении $mime_filename фигурируют лишние двойные кавычки:

"Declaration_for_Exemption_from_deduction_of_defence_contrib_""15%.doc"
"Letter of Undertaking by Beneficial Owners of registered sha""res.doc"


вот подправленная версия патча для exim 4.85:

https://mta.org.ua/exim-4.83-conf/patches/exim-4.85_1-rfc2231/patch-src__exim-4.85_1-rfc2231.patch


она включена в механизм сборки порта exim 4.85_1 для FreeBSD:

https://mta.org.ua/exim-4.83-conf/packages/ports-freebsd/exim-4.85_1/


но всё это уже не так актуально на фоне выхода exim 4.86 с реализованной
пооддержкой RFC2231.

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


> я вообще не в курсе, какие почтовые клиенты кроме
> Thunderbird/Seamonkey/Postbox поддерживают RFC2231.
> 
> 
>> Best regards,
>> Vlad Shpolyanskiy
>>
>> 26 Июл 2015 г. 22:39 пользователь "Victor Ustugov"
>> <victor на corvax.kiev.ua <mailto:victor на corvax.kiev.ua>> написал:
>>
>>     Victor Ustugov wrote:
>>
>>     > и вся эта конструкция скорее всего не сработает, если имя аттача будет
>>     > закодировано не в quoted-printable или base64, а в соответствии с
>>     > RFC2231, как и положено. у altermime с этим проблем нет, но exim из
>>     > коробки вроде до сих пор не поддерживает RFC2231.
>>
>>     не прошло и нескольких дней, как предыдущий абзац стал неактуален.
>>
>>     вышел exim 4.86
>>
>>     в ChangeLog написали в том числе:
>>
>>     "MIME attachment support for RFC2322 filenames"
>>
>>     при этом в этом RFC2322 называется "Management of IP numbers by
>>     peg-dhcp"
>>
>>     а тот RFC, который они скорее всего имели ввиду, это RFC2231 "MIME
>>     Parameter Value and Encoded Word Extensions: Character Sets, Languages,
>>     and Continuations"
>>
>>     RFC2322 и RFC2231 - это типа немного разные вещи.
>>
>>     похоже, что они просто перепутали номер RFC в ChangeLog.
>>
>>     т. к. в src/mime.c из 4.86 по сравнению с 4.85 появилась функция
>>     rfc2231_to_2047 и её использование. но при этом ничего о поддержке
>>     RFC2231 в ChangeLog нет.
>>
>>     так что через почти 8 лет использования можно будет выкинуть мой патч
>>     для поддержки RFC2231.
> 
> 


-- 
Best wishes Victor Ustugov  mailto:victor на corvax.kiev.ua
public GnuPG/PGP key:       http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 371808614          JID: corvax_at_nb на jabber.corvax.kiev.ua
nic-handle: CRV-UANIC



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