p4s8x
@p4s8x

Exim: письма 8192 символов отправляются заметно дольше

Отправляю через SMTP локально.
письма размером до 8192 уходят за 0.004, после 8192 уходят за 0.1, т.е. в 25 раз медленее.
т.е. уже после отправления команды «DATA\r\n», отправляю само письмо

Поскольку число выглядит очень искусственно, подозреваю, что удерживает где-то какая-то настройка. Подскажите, в какую сторону стоит глядеть?

UPDATE:
Расковырял файлы exim'a, выяснил, что утечка происходит исключительно в нем самом.
конкретно
recieve.c:
data_file = fdopen(data_fd, «w+»);

message_ended = read_message_data_smtp(data_file); < — этот вызов съедает все время

static int
read_message_data_smtp(FILE *fout)
{
int ch_state = 0;
register int ch;
register int linelength = 0;

while ((ch = (receive_getc)()) != EOF)
{
if (ch == 0) body_zerocount++;
switch (ch_state)
{
case 0: /* After LF or CRLF */
if (ch == '.')
{
ch_state = 3;
continue; /* Don't ever write . after LF */
}
ch_state = 1;

/* Else fall through to handle as normal uschar. */

case 1: /* Normal state */
if (ch == '\n')
{
ch_state = 0;
body_linecount++;
if (linelength > max_received_linelength)
max_received_linelength = linelength;
linelength = -1;
}
else if (ch == '\r')
{
ch_state = 2;
continue;
}
break;

При этом
int (*receive_getc)(void) = stdin_getc;
int
stdin_getc(void)
{
return getc(stdin);
}
— когда в цикле прогоняется последний(>8000) кусок -резко происходит торможение, но никак не пойму причину. Может настройки самой оси стоит смотреть? FreeBSD 8.2-RELEASE стоит.
  • Вопрос задан
  • 2587 просмотров
Пригласить эксперта
Ответы на вопрос 3
Fiery_Fenix
@Fiery_Fenix
Очень похоже на минимальный размер письма попадающий под антивирус/антиспам. Точно не помню уже, но вроде у серверного Касперского такой минимальный размер. Из еще подозрительных — константа Exim-a DELIVER_OUT_BUFFER_SIZE, которая по умолчанию равна именно 8192, но это вроде размер блока на отсылку, а не на прием.
Вариант проверки — отдавать в цикле по 8192 байта в fputs и посмотреть результат.
Ответ написан
Комментировать
charon
@charon
дайте больше кода. Что в $data?
Ответ написан
p4s8x
@p4s8x Автор вопроса
я выяснил, что проблема на уровне exim'a, обновил текст вопроса, нужна помощь сишников
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы