POP-Before-SMTP - PullRequest
       18

POP-Before-SMTP

2 голосов
/ 12 ноября 2008

Недавно мне пришлось перенести одно из моих веб-приложений на нового хостинг-провайдера. Почта и веб-сервис все еще остаются на старом хостинг-сайте, однако, когда я пытаюсь отправить письмо с нового сервера, я получаю сообщение об ошибке;

"Сервер отклонил один или несколько адресов получателей. Ответ сервера был:

450 <email_address>: Recipient address rejected: Greylisted for 5 minutes

Я спросил моего старого хостинг-провайдера, что мне нужно сделать, чтобы это исправить, и они ответили

Почтовый сервер работает на POP до SMTP. Если действительный логин POP не получил до отправки почты через сервер, то почта серый список и удерживается в течение 5 минут до повторной попытки.

Чтобы предотвратить это, просто сделайте получение перед отправкой почты

Кто-нибудь знает, как я делаю POP перед SMTP в C #?

Ответы [ 6 ]

2 голосов
/ 12 ноября 2008

Я не уверен, как C # будет обрабатывать специфические особенности (сокеты?), Но в основном вы просто хотите установить соединение с вашим новым сервером POP. Вот пример транзакции POP:

$ telnet new-pop-server.com 110
Connected to new-pop-server.com.
Escape character is '^]'.
+OK
USER <username>
+OK 
PASS <password>
+OK               // you're authenticated at this point 
LIST
+OK 
.                 // no new messages!
QUIT
+OK 

Как только вы авторизуетесь, вы сможете отправлять свою почту программно. (USER, PASS, LIST, QUIT) - все команды, которые вы отправляете ( pop3 RFC ).

1 голос
/ 18 ноября 2008

У вас уже есть код, который вы ищете, но если я могу добавить в моих мыслях: как кто-то еще уже предложил, я бы проверил со старым провайдером, предоставляют ли они AUTH с SMTP. Для меня они говорят следующее: «Вы можете использовать SMTP, только если вы пришли из того же диапазона / подсети IP, или если вы аутентифицировали себя». Многие провайдеры делают это со своими SMTP-серверами. Если вы подключены через определенного интернет-провайдера, вы можете использовать SMTP без явного указания учетных данных AUTH. Если вы переключаетесь на другого интернет-провайдера и хотите использовать SMTP старого интернет-провайдера, вам придется явно пройти аутентификацию на SMTP-сервере.

1 голос
/ 18 ноября 2008

Как и предполагалось, я добавил код в свой блог. Это не лучший блог, когда-либо опубликованный, но кто-то может найти его полезным ... POP-Before-SMTP

1 голос
/ 13 ноября 2008

Мне удалось написать код для этого. Я готов поделиться решением (если кому-то интересно?), Но не уверен, как лучше всего разместить код в Stackoverflow? Это около 50 строк кода.

1 голос
/ 12 ноября 2008

Я почти уверен, что POP3 не встроен в .NET Framework, поэтому вам нужно реализовать его самостоятельно, как предложил Оуэн, или искать существующую библиотеку POP3, например , эту . * 1003. *

Еще лучше убедить вашего нового хостинг-провайдера ослабить это правило серых списков.

1 голос
/ 12 ноября 2008

Они серят вас, потому что вы подключаетесь от своего нового провайдера, верно? Разве у нового провайдера нет SMTP, который разрешает соединения с IP-диапазона серверов?

Другой подход заключается в том, чтобы выполнить поиск MX самостоятельно и подключиться напрямую к авторизованному SMTP-серверу, на адрес которого вы отправляете электронную почту. Однако это также требует от вас обработки серых списков, то есть повторений ответов 4xx, чтобы обеспечить надежную доставку.

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

...