2009-11-07 3 views
3

Мне нужно отправить электронную почту DIRECLTY на почтовый сервер получателя, минуя любые MTA на моем конце. Я знаю, что есть несколько причин использовать MTA, такие как sendmail и т. Д., Поэтому мне не нужны советы в этом направлении. Я хотел бы написать код, который напрямую подключается к почтовым серверам получателя.Каков правильный способ отправки электронной почты * напрямую * с использованием протокола SMTP? (обход MTA на моем конце)

Итак, я что-то пропустил?

  1. Предположит, электронная почта назначения [email protected]
  2. Посмотрите запись MX для domain.com и выбрать случайную запись MX. Мы называем это «сервер»
  3. Если нет записи MX для domain.com, использовать «domain.com» в качестве «сервера»
  4. Подключение к «серверу» в порту 25.
  5. передает эту :

HELO myserver.com
MAIL FROM: <[email protected]>
RCPT TO: <[email protected]>
ДАННЫЕ
Тема: Это тест

Здравствуйте, Это тестовое сообщение.

ВЫЙТИ

Это работает в большинстве случаев. Мне интересно, чего мне не хватает? Есть ли случаи, когда это не сработает, и мне нужно сделать что-то более особенное?

Могу ли я проверить его, когда мы идем - если удаленный сервер, к которому я подключаюсь, говорит «СООБЩЕНИЕ, ПРИНИМАЕМЫЙ ДЛЯ ПОСТАВКИ», могу ли я предположить, что он пройдет?

+0

У меня возникло ощущение, что вы можете получить ответ на SuperUser, т. Е. Https://superuser.com/ – davidkonrad

ответ

4

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

Это называется прямой отправкой в ​​MX, и это имеет то преимущество, что вы можете очень часто сразу сказать, когда пользователь вводит неверный адрес или не принимает почту, и немедленно сообщите об этом. Это хорошо для процессов регистрации веб-сайтов, где вы не хотите, чтобы пользователь сидел рядом, задаваясь вопросом, куда отправляется их электронная почта.

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

Во-первых, домен может иметь несколько MX, ожидая, что спамеры с их типично немым программным обеспечением смогут попробовать только первый. Если доставка не удалась на одном MX, вы должны попробовать другие.

Возможно, было бы целесообразно внедрить ESMTP (EHLO и др.), Чтобы отличить себя от МТА более низкого качества, например, для использования сценариев спамеров. У меня нет никаких доказательств того, что почтовые серверы там дискриминируют свои оценки спама на основе этого, но это то, что я бы подумал об этом, возможно, кто-то еще подумал об этом!

Более распространенная проблема: greylisting. Если вы хотите, чтобы почта прибыла перед лицом ответов временного отказа, генерируемое greylisting, вам придется немного подождать, а затем попытаться подключиться и отправить его второй раз. Это теряет часть потенциального безгражданства и возможности быстрого отказа от прямой почты на MX.

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

+0

Если ваш почтовый сервер может проверить, существует ли у вас пользователь, вы можете отправить его «вручную», но ваш почтовый сервер, поэтому вам не нужно беспокоиться о поиске правильного MX для доставки. –