Страница 1 из 1

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-30 20:06:53
sansa
Exim 4.86.

Выросло хозяйство, пользователей стало не 30 а более 200, субдоменов добавилось...
Структура пользователей по файлам уже стала напрягать, прикрутил vexim.
Тестю (пока альфа).
И вот такое выплыло. В конфиге для exima из дистриба vexim есть такой файл "vexim_acl_check_content.conf"
В нем есть такая вот секция:

Код: Выделить всё

  deny  message         = This message contains a MIME error ($demime_reason)
        demime          = *
        condition       = ${if >{$demime_errorlevel}{2}{1}{0}}
которая срабатывает на вот такой файл во вложении:
"Подключение дистанционного обслуживания, кодового слова, систем самообслуживания.pdf"
такой вот ошибкой:
rejected after DATA: This message contains a MIME error (demime acl condition: proposed filename exceeds 512 characters)
С одной стороны, можно и забить, сервер 4 года без нее работал нормально.

С другой стороны, при ошибках MIME распаковки не работает сканер вирусов, правила на расширение файлов и подобное. Возможно и уязвимость, эксплуатирующая ошибки MIME есть (или появится).

С третьей - подумалось а действительно, "нафига" легитимно позволять отправлять письма с "битым" MIME? В легитимном случае, лучше сразу пользователю сообщить, что его вложения на другой стороне возможно не смогут распаковаться. В нелегитимном - реджект мэйлвара и спама, если это извне, и повод прошерстить на предмет червя, если это из локалки.

С четвертой - Винда позволяет все-таки 1024 символа. И нечего мешать пользователям отправлять (и принимать) нормальные файлы.

Собственно вопрос.
Есть ли возможность настроить demime на предмет 1024 символа?

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 1:15:56
xM
Ну так уберите эту проверку на ошибки MIME - пусть письмо дальше идёт.
Всё равно она погоды не делает.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 13:12:29
sansa
Так пока и убрал, но объяснил жеж, почему считаю ее полезной

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 13:31:05
xM
sansa писал(а): Так пока и убрал, но объяснил жеж, почему считаю ее полезной
Напишите в багтреккер с аргументацией почему надо 1024.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 19:20:33
sansa
Ситуация приобрела новое направление.
Скачал исходники.
По сообщению об ошибке вышел на файл demime.h, в котором определена данная переменная. Думал уже сделать патчик, да из сырцов поставить, но решил сначала почитать RFC. Не нашел никаких ограничений, но потом случайно спросил у вики на предмет длинны имени файла. Там вообще ограничение в 255 символов.
Получается какая-то другая беда...
Буду копать дальше.

ЗЫ
Ах, да, отвечаю на свой первый вопрос.
Из конфигурации данная переменная не устанавливается, она константа и жестко зашита в код.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 19:32:17
xM
sansa писал(а): Там вообще ограничение в 255 символов.
Вероятно 512 это из-за ЮНИКОД.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 19:37:00
sansa
Все равно не получается. 2х255 = 510.
ЗЫ. Т.е. на ФС файл хранится нормально. Имя у него короче 255 символов, а при MIME кодировке - распухает больше 512 символов.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 19:39:14
xM
ну под степень двойки всё подводится, в любом случае.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 19:41:30
sansa
Причем здесь степень двойки?
Имя файла в ASCII занимает количество символов * 8 бит (по одному байту на символ). В UTF - количество символов * 16 бит (по 2 байта на символ). Разница не в степени, а просто в 2 раза.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 19:46:17
xM
При том что размерность буферов подгоняют, обычно, под неё. Так удобнее по многим причинам.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 19:49:17
sansa
Тут согласен.
В итоге, кусок конфига нужный, прото он работает не так как задумано...

Виноват или клиент, или процедура demime.
Может кто помочь? Внести в тестовый сервер данную секцию, и попробовать вашим клиентом отправить сообщение с таким же файлом (только по имени) через него?
Я пробовал Thunderbird 38.5.1, roundcube 0.9.5 - оба клиента режутся данным правилом на этом имени файла.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 20:24:40
xM
sansa писал(а): Я пробовал Thunderbird 38.5.1, roundcube 0.9.5 - оба клиента режутся данным правилом на этом имени файла
А точно у вас дело именно в длине имени файла? Может быть там какой-то спецсимвол чудесным образом затесался?

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 20:45:47
sansa
Имя файла для поста скопировано из explorerа. F2, Ctrl_C, форум, Ctrl_V
В клиентах выбирал его же (он у меня 100% один такой).

Отправлено спустя 15 минут 58 секунд:
Да и не бывает символов на 4+ байта.
Тем более, что в ASCII имя файла 85 байт. Вместе с расширением.
ЗЫЫ. Скопировал имя из эксплолера. Вставил в текстовый редактор FAR Manager. Сохранил. Посмотрел HEX структуру, не увидел ничего нового.
Перезагрузил комп. Скопировал из редактора имя файла, переименовал 1 файл с помощью проводника, второй с помощью FAR. Попробовал раздельно отправить каждый из них каждым клиентом. Та же беда. Во всех случаях.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-01-31 22:50:55
xM
sansa писал(а): Тем более, что в ASCII имя файла 85 байт. Вместе с расширением.
Я к тому же и писал.
Да, интересно.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-02-01 0:05:56
sansa
xM писал(а): Да, интересно.
Поможешь с клиентами?

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-02-01 0:39:37
xM
sansa писал(а): Поможешь с клиентами?
У меня лично их, собственно, два. Один как у вас (RC), а второй несколько экзотичен для России и вряд ли вас заинтересует.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-02-03 20:53:39
sansa
Пока проверил только штатным outlook`ом XP. То же самое.
Уже думаю, за ОС. Ubuntu 14.04 LTS. Поднял такую же рядом (благо виртуальная ферма есть). Накатываю те же конфиги, но без обновлений

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-02-04 20:08:26
Alex Keda
я, кстати, сообщения с длинными именами вложений просто срубаю.

exim4 demime - Ошибка: Слишком длинное имя (>512 символов)

Добавлено: 2016-02-04 20:30:21
sansa
Я согласен, что может помочь с "Вы выйграли приз.doc.txt.pdf.vbs", но само по себе не является защитой от этого.
ЗЫ. Нашел OpenBsd лет 6 работающую в качестве фэйлшары. Поднял на ней экзим из портов (версию не посмотрел), стандартный конфиг, только локальные пользователи - то же самое...