8 votes

Existe-t-il des serveurs SMTP écrits en PHP ou en Go ?

Je ne veux pas dire Clients SMTP/IMAP Je veux dire un travail SMTP qui peut à la fois recevoir et envoyer des e-mails.

Il y a beaucoup d'exemples d'utilisation partielle PHP y Allez sur Les serveurs SMTP qui n'écoutent que les connexions SMTP - n'en existe-t-il pas qui montrent comment envoyer du courrier ?

Je suis vraiment intéressé par l'apprentissage de la seconde moitié du Simple Mail Transfer Protocol. Je comprends qu'il y a beaucoup de mauvais serveurs qui s'écartent de la norme, mais je veux apprendre comment l'ensemble du protocole, du début à la fin, est mis en œuvre.

16voto

Burhan Khalid Points 50578

Je pense que vous ne comprenez pas comment le SMTP est censé fonctionner. Voici une version simplifiée :

  1. L'agent utilisateur de courrier (MUA) met un message en file d'attente pour la distribution en l'envoyant à l'agent de soumission de courrier (MSA).

  2. MSA se connecte à l'agent de transfert de courrier (le "serveur smtp") par SMTP.

  3. Le MTA utilise ensuite le DNS pour rechercher l'enregistrement MX du domaine du destinataire. Il contacte ensuite le serveur MX du destinataire en tant que Client SMTP .

  4. Le serveur MX accepte l'enveloppe ; il la transmet ensuite à un agent de distribution du courrier (MDA).

  5. MDA place ensuite l'enveloppe dans un magasin de messages où un serveur IMAP ou POP3 lit les messages. Le MUA se connecte ensuite à ces serveurs pour récupérer le message.

L'ensemble du processus utilise trois commandes principales. MAIL , RCPT y DATA .

  • MAIL = Informations sur les enveloppes, adresses de rebond, etc.
  • RCTP = Le destinataire.
  • DATA = La charge utile.

Le serveur SMTP répond - comme HTTP en fait - avec des codes d'erreur et, sur cette base, le MTA sait quoi faire de l'enveloppe (c'est un rebond, il faut donc envoyer une réponse appropriée, etc.)

Dans ce processus, il n'existe pas de "récupération d'email" (en ignorant ETRN ), car le SMTP ne sert qu'à transmettre des messages électroniques et non à les récupérer.

3voto

Xeoncross Points 13263

J'ai trouvé un plein Serveur SMTP écrit en PHP - il comprend même un méchant relais ouvert.

$ sudo php php-smtp.php [ip-address] [port]

1voto

itsbruce Points 2598

Il n'y a pas de "seconde moitié" de SMTP, juste le protocole. Si votre MUA interagit directement par TCP avec le serveur de messagerie (plutôt que d'utiliser un programme d'aide comme le programme de gestion de la messagerie SMTP), vous pouvez utiliser le protocole SMTP. /usr/bin/sendmail que l'on trouve sur la plupart des Unix), il utilise alors le protocole SMTP. Le MTA utilise le même protocole pour communiquer avec les autres MTA lors de la distribution du courrier. Il peut utiliser un ensemble plus large de verbes disponibles, en fonction des circonstances.

En voyant le code d'une implémentation PHP ou Go d'un MTA, vous verrez comment une personne ou une équipe a mis en œuvre le protocole SMTP.

1voto

Jonathan Hendler Points 696

Il y a un serveur PHP smtpd qui ne fait que traiter le courrier https://github.com/flashmob/Guerrilla-SMTPd et un port à emporter https://github.com/flashmob/go-guerrilla

1voto

David Points 19

Il existe un serveur SMTP non bloquant écrit en PHP au-dessus de ReactPhp :

https://bitbucket.org/david_garcia_garcia/smtpserver

Il est conçu pour que l'utilisateur final puisse avoir des implémentations personnalisées de l'authentification et de la livraison, le reste du comportement SMTP est prêt à l'emploi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X