[PYTHON] Configurer un serveur de messagerie avec Twisted

Configurer un serveur de messagerie avec Twisted

Sendmail, postfix, qmail, etc. juste pour tester Définissez MTA et modifiez le fichier de configuration, etc. Cela peut être difficile, mais même ainsi, j'ai envoyé un e-mail de test des déchets Je pense que l'envoyer à l'environnement de production est également étrange. Vous pouvez également utiliser une bibliothèque fictive telle que Minimock, Si vous utilisez une bibliothèque non prise en charge, Je veux l'utiliser quand je suis fatigué.

Twisted est polyvalent, vous pouvez donc facilement configurer un serveur de messagerie.

Environnement d'exploitation

L'environnement de vérification est le suivant. (C'est mignon que l'environnement et le logiciel soient mélangés)

Logiciel version
Mac OS X 10.8
Python 2.7.4
Twisted 0.13.0

Préparation avant l'opération

Sinon, suivez les étapes ci-dessous pour l'installer.

> curl -O http://python-distribute.org/distribute_setup.py
> sudo python distribute_setup.py

Sinon, suivez les étapes ci-dessous pour l'installer.

> sudo easy_install pip

Sinon, suivez les étapes ci-dessous pour l'installer.

> pip install virtualenv

Préparation environnementale

C'est aussi une raison pour installer Twisted globalement, Créons un environnement Sandbox avec le sentiment suivant.

> mkdir -p ~/Sandbox/TwistedMail
> cd ~/Sandbox/TwistedMail
> virtualenv python
> source python/bin/activate
> pip install twisted

Commencez!

Se termine ci-dessous

> twistd mail --maildirdbmdomain=example.com=/tmp/example.com --user=futoase=mogemoge

En tant que serveur de messagerie pour example.com L'utilisateur est futoase, le mot de passe est mogemoge C'est sous forme de paramètres. C'est facile.

Par défaut, le port SMTP est 8025 et le port POP3 est 8110. S'il entre en collision avec le processus MTA existant, je pense que le port devrait rester tel quel.

Vérifiez le fonctionnement

Ecrire un simple script de test d'envoi de mail en Python, Testons l'envoi et la réception d'e-mails.

Envoyez un e-mail à [email protected]

Écrivez un script qui envoie Hello world à [email protected].

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import smtplib

server = smtplib.SMTP('localhost', 8025)
server.set_debuglevel(1)
server.sendmail('futoase@localhost', '[email protected]', 'Hello world')
server.quit()

Lorsque vous exécutez le script, la commande RCPT, etc. Envoyez à l'autre partie.

send: 'ehlo matsuzakipc.local\r\n'
reply: '500 Command not implemented\r\n'
reply: retcode (500); Msg: Command not implemented
send: 'helo matsuzakipc.local\r\n'
reply: '250 matsuzakipc.local Hello 127.0.0.1, nice to meet you\r\n'
reply: retcode (250); Msg: matsuzakipc.local Hello 127.0.0.1, nice to meet you
send: 'mail FROM:<futoase@localhost>\r\n'
reply: '250 Sender address accepted\r\n'
reply: retcode (250); Msg: Sender address accepted
send: 'rcpt TO:<[email protected]>\r\n'
reply: '250 Recipient address accepted\r\n'
reply: retcode (250); Msg: Recipient address accepted
send: 'data\r\n'
reply: '354 Continue\r\n'
reply: retcode (354); Msg: Continue
data: (354, 'Continue')
send: 'Hello world\r\n.\r\n'
reply: '250 Delivery in progress\r\n'
reply: retcode (250); Msg: Delivery in progress
data: (250, 'Delivery in progress')
send: 'quit\r\n'
reply: '221 See you later\r\n'
reply: retcode (221); Msg: See you later

Recevoir les e-mails envoyés à [email protected]

Recevez Hello world en tant qu'utilisateur [email protected] Écrivez un script. (De plus, utilisez la commande DELE pour supprimer le courrier)

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import poplib

client = poplib.POP3('localhost', 8110)
client.user('[email protected]')
client.pass_('mogemoge')
num_messages = len(client.list()[1])

for i in range(num_messages):
  for j in client.retr(i+1)[1]:
     print(j)

for i in range(num_messages):
  client.dele(i)

Lorsque vous exécutez le script pour récupérer le courrier via POP3, Le contenu du script créé par l'expéditeur s'affiche.

Delivered-To: [email protected]
Received: from matsuzakipc.local ([127.0.0.1] helo=matsuzakipc.local)
        by matsuzakipc.local with esmtp ([twisted, version 13.0.0])
        for <[email protected]>; Tue, 30 Apr 2013 13:23:12 +0900

Hello world

Sans utiliser la bibliothèque fictive Si vous souhaitez configurer un serveur de messagerie de test pour le moment Twisted est facile. Vous n'avez à penser à rien.

Il prend également en charge overSSL. Twisted se sent invincible.

Recommended Posts

Configurer un serveur de messagerie avec Twisted
Configurer un serveur de fichiers sur Ubuntu 20.04 à l'aide de Samba
Créez facilement un serveur DNS en utilisant Twisted
Configurer un serveur HTTPS simple avec Python 3
Configurer un serveur HTTPS simple avec asyncio
Configurer un serveur local avec le téléchargement Go-File-
Configurez un serveur SMTP de test en Python.
Configurer un serveur UDP en langage C
Configurer un serveur local avec le téléchargement Go-File-
Comment configurer un serveur de développement local
Configurer un serveur SMTP simple en Python
Envoyez du courrier avec mailx à un serveur SMTP factice configuré avec python.
Configurez un serveur Web local en 30 secondes en utilisant http.server en python 3
Configurer un serveur local simple sur votre Mac
Configurer un serveur de ressources Minecraft (Spigot) via docker (2)
Configurez un serveur gratuit sur AWS en 30 minutes
[Partie 1] Configurons un serveur Micra sur Linux
Configurer un serveur de ressources Minecraft (Spigot) via docker
[Vagrant] Configurer un serveur API simple avec python
Configurer un serveur de fichiers en utilisant samba avec ZeroPi de Friendly Arm [installation du système d'exploitation]
Je veux configurer un serveur fictif pour python-flask en quelques secondes en utilisant swagger-codegen.
Configurer un serveur de fichiers utilisant la samba avec ZeroPi de Friendly Arm [Articles achetés]
Configurer un serveur de fichiers utilisant la samba avec ZeroPi de Friendly Arm [Importation personnelle]
Configurer un serveur Web avec CentOS7 + Anaconda + Django + Apache
Configurer un nœud pour faire MNIST sur ROS à l'aide de Tensorflow
Comment configurer SVM à l'aide d'Optuna
Configurer un serveur qui traite plusieurs connexions en même temps
Comment configurer une forêt aléatoire à l'aide d'Optuna
Ecrire un serveur TCP à l'aide du module SocketServer
Comment configurer une forêt aléatoire à l'aide d'Optuna
Configurer un environnement de développement Python sur Marvericks
Préparer un pseudo serveur API à l'aide d'actions GitHub
Mettre en place un environnement de développement pour le traitement du langage naturel
Mailman remet tout le courrier envoyé à partir d'un serveur de messagerie spécifique
Créer un pseudo serveur d'API REST à l'aide de pages GitHub
Apprendre un réseau neuronal à l'aide de Chainer
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
Configurer un environnement de développement Python avec Sublime Text 2
Lorsqu'il est difficile de configurer un serveur SMTP localement lors de l'envoi de courrier avec Python.
Comment configurer un serveur SMTP simple qui peut être testé localement en Python
Configurer Jetson nano
Configurer un environnement de développement Python avec Visual Studio Code
Connexion SSH à un serveur privé à l'aide d'un serveur de plateforme dans EC2
Créez un serveur Web API à une vitesse explosive en utilisant HUG
Définir la clé de compte de service Google Cloud dans heroku
Configurons un modèle de prédiction de survie pour les passagers du Titanic
Acquisition d'informations sur la carte Édition Python 3 (Un ensemble de niveau de rang supérieur)
Configurez votre propre serveur Web dans votre projet d'application Pepper
Recharger le serveur configuré avec gunicorn lors du changement de code