POP-до-SMTP

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

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

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

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

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

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

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


person Skittles    schedule 11.11.2008    source источник


Ответы (6)


я не уверен, как 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 ).

person Owen    schedule 11.11.2008

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

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

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

person jishi    schedule 11.11.2008
comment
Джиши, да, серый список — это потому, что я пытаюсь подключиться от моего нового провайдера к старому провайдеру, где находятся мои почта и веб-сервисы. Не уверен, что мой новый провайдер разрешает подключения с серверов IP-рейнджера. Одна вещь, которую я узнаю, заключается в том, что использование виртуального хостинга доставляет больше хлопот, чем пользы. - person Skittles; 12.11.2008

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

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

person C. Dragon 76    schedule 12.11.2008

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

person Skittles    schedule 12.11.2008
comment
возможно, свяжите его в своем блоге, если вы чувствуете, что другие могут захотеть его использовать? - person Owen; 13.11.2008
comment
Хорошая идея, Оуэн.. Спасибо, я сделаю это.. Не уверен, что другие захотят его использовать, но лучше, чем застрять на моем диске D.. - person Skittles; 13.11.2008

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

person Skittles    schedule 18.11.2008

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

person ayaz    schedule 18.11.2008