2009-11-07 15 views
3

Je dois envoyer des emails DIRECTEMENT au serveur de messagerie du destinataire, en contournant tout MTA de mon côté. Je sais qu'il y a de bonnes raisons d'utiliser des MTA comme sendmail, etc., donc je n'ai pas besoin de conseils dans ce sens. Je voudrais écrire le code qui se connecte directement aux mails mails du destinataire.Quelle est la bonne façon d'envoyer un email * directement * en utilisant le protocole SMTP? (contourner MTA sur mon extrémité)

Alors, je manque quelque chose ici?

  1. Supposons que le courriel de destination est [email protected]
  2. Consulter les enregistrements MX pour domain.com et choisir une entrée MX aléatoire. Nous appellerons « serveur »
  3. S'il n'y a pas d'enregistrement MX pour domain.com, utilisez « domain.com » comme le « serveur »
  4. Connectez-vous à « serveur » au port 25.
  5. Transmettre cette :

HELO myserver.com
MAIL DE: <[email protected]>
RCPT TO: <[email protected]>
DONNÉES
Objet: Ceci est un test

Bonjour, ceci est un message de test.

QUIT

Cela a travaillé dans beaucoup de cas. Ce que je me demande est: qu'est-ce qui me manque? Y at-il des cas où cela ne fonctionnera pas, et je vais devoir faire quelque chose de plus spécial? Est-ce que je peux le tester au fur et à mesure - si le serveur distant auquel je me connecte dit "MESSAGE ACCEPTÉ POUR LA LIVRAISON", puis-je supposer que ça va passer?

+0

J'ai l'impression que vous pourriez obtenir une réponse sur SuperUser, par exemple https://superuser.com/ – davidkonrad

Répondre

4

Vous devriez vérifier les codes de réponse prévus à chaque étape, et vous aurez bien sûr besoin d'échapper des lignes dans le message en commençant par un point, mais oui, c'est à peu près tout. Ceci est connu sous le nom de publipostage direct-MX, et il a l'avantage que vous pouvez très souvent dire tout de suite lorsque l'utilisateur a saisi une adresse erronée, ou n'accepte pas le courrier, et les informer immédiatement. C'est bon pour les processus d'inscription de site Web où vous ne voulez pas que l'utilisateur assis autour de se demander où leur courrier d'inscription est allé. Cependant, les principaux utilisateurs du courrier direct vers MX sont, malheureusement, les spammeurs. Il y a donc des contre-mesures anti-spam qui peuvent aussi vous trébucher. Tout d'abord, un domaine peut avoir plusieurs MX, s'attendant à ce que les spammeurs avec leur logiciel typiquement stupide essaient seulement le premier. Si la livraison échoue à un MX, vous devriez essayer les autres.

Il pourrait également être utile de mettre en œuvre ESMTP (EHLO et al) pour vous distinguer des MTA de qualité inférieure comme les spammeurs de scripts utilisent. Je n'ai aucune preuve que les serveurs de messagerie discriminent leurs scores de spam en fonction de cela, mais c'est quelque chose que je considérerais si probablement quelqu'un d'autre a pensé à cela! Un problème plus commun est greylisting. Si vous voulez que le courrier arrive en face des réponses d'échec temporaire que greylisting génère, vous devrez attendre un peu avant de tenter de vous connecter et de l'envoyer une seconde fois. Cela perd une partie de l'avantage potentiel de l'apatridie et de l'échec rapide du courrier direct-MX. Bien sûr, avec toute solution où vous envoyez du courrier sans un relais de messagerie ISP en amont, que ce soit directement ou via votre propre suffixe local, vous courez le risque d'être bloqué par adresse. Cette possibilité augmente lorsque vous ne pouvez pas configurer votre DNS inverse pour correspondre à votre HELO et être quelque chose qui ne ressemble pas à une adresse allouée dynamiquement.

+0

Si votre serveur de messagerie peut vérifier si l'utilisateur existe pour vous, vous pouvez l'envoyer "manuellement" mais votre serveur de messagerie afin que vous n'ayez pas à vous soucier de trouver le bon MX pour la livraison. –