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

Как включить конвейерную обработку в Exim4?

Я использую сервер Exim 4 для отправки электронной почты нескольким клиентам, я не гуру Linux, но он работает хорошо.

Один клиент использует AppRiver, и нам сказали, что нам нужно включить конвейерную обработку, чтобы они не рассматривали нашу электронную почту как спам. Я часами искал в Google, как включить эту функцию, но не могу понять, как это сделать. Насколько я могу судить, он включен по умолчанию.

Кто-нибудь может помочь?

Во-первых, слово «конвейерная обработка» в SMTP имеет два значения.

  1. Команды PIPELINING = клиент smtp подключается и просто отправляет команды EHLO, MAIL FROM, RCPT TO и DATA одновременно (exim называет это синхронизацией команд)
  2. Сообщения PIPELINING = клиент smtp подключается и отправляет несколько сообщений за одно соединение.

Похоже, они говорят о №2. В соответствии с http://www.exim.org/exim-html-current/doc/html/spec_html/ch41.html#SECTmulmessamв отношении конвейерной передачи к хостам через соединения TLS:

Exim отправляет несколько сообщений по одному и тому же TCP / IP-соединению, запуская совершенно новый процесс доставки для каждого сообщения, передавая сокет от одного процесса к другому. Эта реализация не очень хорошо подходит для использования TLS, потому что с TLS-соединением связано довольно много информации о состоянии, а не только идентификация сокета. Передать всю информацию о состоянии новому процессу невозможно. Следовательно, exim завершает существующий сеанс TLS перед передачей сокета новому процессу. Затем новый процесс может попытаться начать новый сеанс TLS и, в случае успеха, может попытаться повторно аутентифицироваться, если используется AUTH, перед отправкой следующего сообщения.

Это означает вместо того, что вы ожидаете:

connect->starttls->msg1->msg2->...msgX->quit

Exim делает это:

connect->starttls->msg1->end_session->starttls->msg2->end_session...->quit

Вышесказанное по памяти, я не могу вспомнить, включал ли "end_session" отключение или нет. Но однажды я помог одному парню устранить эту проблему в IRC, и он понял, что приведенный выше абзац означает, что конвейер не будет выполняться первым описанным способом, если STARTTLS будет использоваться для шифрования сеанса. Итак, к сожалению, единственный мой комментарий заключается в том, что если вы не используете TLS для этого конкретного хоста, он должен начать конвейерную обработку так, как они этого хотят, но я считаю, что это совсем не лучший ответ, так как я считаю, что все передачи электронной почты должны быть зашифрованы. .