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