Хороший вопрос - ваш ответ, безусловно, лучший способ сделать это. знак равно

тим, вы разрабатываете модный почтовый сервер с поддержкой правил (например, условная пересылка и т. Д.). Вечная проблема почтовых циклов смотрит вам в лицо:

1) Скажем, вы установили правило, которое пересылает всю вашу почту на другой адрес. Что если этот адрес не существует, и почтмейстер в этом домене отправляет вам сообщения, сообщающие вам об этом. Конечно, ваше правило не делает различий между этими сообщениями, а также направляет их, создавая цикл.

2) Другая ситуация - два пользователя, использующие этот клиентский клиент, устанавливают правила пересылки по адресу друг друга. Все, что нам нужно, это одно стартовое сообщение, и они собираются в цикле.

3) Или как насчет случая автоответчика, когда клиент перенаправляет на адрес, который автоматически отвечает обратно, вызывая еще один цикл.

Я не эксперт в этом, но не похоже, что обнаружение петель сработает. Мы, конечно, могли бы придумать некоторую эвристику, но, похоже, универсального алгоритма не существует.

Одно из решений, о котором я думал, совсем не связано с обнаружением. Вместо этого мы просто отслеживаем учетные записи на предмет высокой активности отправки почты (или высокой активности отправки, вызванной правилами) и временно отключаем электронную почту / правила для этих учетных записей, пока они не устранят проблему. Однако это решение должно пройти границу между учетными записями, вызывающими циклы, и учетными записями, которые просто получают много почты и пересылают ее куда-то еще.

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

Есть ли хорошие решения, которые я пропускаю?

Ответы на вопрос(1)

Решение Вопроса

RFC 3834, Это дает хорошее представление о том, что вас волнует. (Он охватывает автоответчики, а не переадресацию, но все же полезно.)

Как правило, вы хотите добавить X-заголовок к сообщению во время пересылки, чтобы указать, что сообщение было доставлено в почтовый ящик пользователя один раз. (Это то, что Sieve RFC упоминает в своемredirect раздел.) Если приходит сообщение за[email protected] и есть упоминание X-заголовка[email protected]У вас есть петля. Так что-то вроде этого:

X-YourServer-Delivered: [email protected]

Вы также хотите избежать пересылки уведомлений о доставке сообщений, которые должны иметь<> как SMTP ПОЧТА ОТ. И не пересылать сообщения автоответчика, которые должны иметьAuto-Submitted заголовок со значением, отличным от «нет».

Посмотрите RFC 3834 для получения дополнительных идей о том, чтоне для пересылки, но вышеупомянутое должно охватывать большинство случаев.

 dkarp20 янв. 2011 г., 04:24
Если вы хотите назвать свой пользовательский заголовок loop-buster,Delivered-To а такжеX-Loop два из самых популярных.
 Ben20 янв. 2011 г., 20:41
Это хорошее начало, но оно опирается и на другие системы, чтобы придерживаться RFC, что, вероятно, верно в большинстве случаев, но у нас нет никаких гарантий. Похоже, мы бы хотели, чтобы в любом случае мы использовали способ ограничения соединений в качестве резервной копии.

Ваш ответ на вопрос