[PYTHON] Richten Sie mit Twisted einen Mailserver ein

Richten Sie mit Twisted einen Mailserver ein

Sendmail, Postfix, Qmail usw. nur zum Testen Stellen Sie MTA ein und ändern Sie die Konfigurationsdatei usw. Es kann schwierig sein, aber trotzdem habe ich eine Mülltest-E-Mail gesendet Ich finde es auch seltsam, es an die Produktionsumgebung zu senden. Sie können auch eine Scheinbibliothek wie Minimock verwenden. Wenn Sie eine nicht unterstützte Bibliothek verwenden, Ich möchte es benutzen, wenn ich müde bin.

Twisted ist vielseitig einsetzbar, sodass Sie problemlos einen Mailserver einrichten können.

Betriebsumgebung

Die Überprüfungsumgebung ist wie folgt. (Es ist süß, dass die Umgebung und Software gemischt sind)

Software Ausführung
Mac OS X 10.8
Python 2.7.4
Twisted 0.13.0

Vorbereitung vor dem Betrieb

Wenn nicht, führen Sie die folgenden Schritte aus, um es zu installieren.

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

Wenn nicht, führen Sie die folgenden Schritte aus, um es zu installieren.

> sudo easy_install pip

Wenn nicht, führen Sie die folgenden Schritte aus, um es zu installieren.

> pip install virtualenv

Umweltvorbereitung

Es ist auch ein Grund, Twisted global zu installieren. Erstellen wir eine Sandbox-Umgebung mit dem folgenden Gefühl.

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

Anlaufen!

Endet unten

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

Als Mailserver für example.com Benutzer ist futoase, Passwort ist mogemoge Es ist in Form von Einstellungen. Es ist einfach.

Standardmäßig ist der SMTP-Port 8025 und der POP3-Port 8110. Wenn es mit dem vorhandenen MTA-Prozess kollidiert, sollte der Port meiner Meinung nach unverändert bleiben.

Überprüfen Sie den Betrieb

Schreiben Sie ein einfaches Testskript zum Senden von E-Mails in Python. Testen wir das Senden und Empfangen von E-Mails.

Senden Sie eine E-Mail an [email protected]

Schreiben Sie ein Skript, das Hello world an [email protected] sendet.

#!/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()

Wenn Sie das Skript, den RCPT-Befehl usw. ausführen. An die andere Partei senden.

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

Erhalten Sie E-Mails an [email protected]

Erhalten Sie Hello World als Benutzer [email protected] Schreiben Sie ein Skript. (Verwenden Sie außerdem den Befehl DELE, um die E-Mail zu löschen.)

#!/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)

Wenn Sie das Skript ausführen, um die E-Mail mit POP3 abzurufen, Der Inhalt des vom Absender erstellten Skripts wird angezeigt.

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

Ohne die Scheinbibliothek zu benutzen Wenn Sie vorerst einen Testmail-Server einrichten möchten Verdreht ist einfach. Sie müssen an nichts denken.

Es unterstützt auch overSSL. Twisted fühlt sich unbesiegbar an.

Recommended Posts

Richten Sie mit Twisted einen Mailserver ein
Richten Sie mit Samba einen Dateiserver unter Ubuntu 20.04 ein
Erstellen Sie einfach einen DNS-Server mit Twisted
Richten Sie mit Python 3 einen einfachen HTTPS-Server ein
Richten Sie einen einfachen HTTPS-Server mit Asyncio ein
Richten Sie einen lokalen Server mit Go-File-Upload ein.
Richten Sie einen Test-SMTP-Server in Python ein.
Richten Sie einen UDP-Server in der Sprache C ein
Richten Sie einen lokalen Server mit Go-File-Download ein.
So richten Sie einen lokalen Entwicklungsserver ein
Richten Sie einen einfachen SMTP-Server in Python ein
Senden Sie E-Mails mit mailx an einen mit Python eingerichteten Dummy-SMTP-Server.
Richten Sie mit http.server in Python 3 in 30 Sekunden einen lokalen Webserver ein
Richten Sie einen einfachen lokalen Server auf Ihrem Mac ein
Richten Sie einen Minecraft-Ressourcenserver (Spigot) über Docker (2) ein.
Richten Sie in 30 Minuten einen kostenlosen Server unter AWS ein
[Teil 1] Lassen Sie uns einen Micra-Server unter Linux einrichten
Richten Sie einen Minecraft-Ressourcenserver (Spigot) über Docker ein
[Vagrant] Richten Sie einen einfachen API-Server mit Python ein
Richten Sie einen Dateiserver mit Samba mit ZeroPi von Friendly Arm ein [Betriebssysteminstallation]
Ich möchte mit swagger-codegen in Sekundenschnelle einen Mock-Server für Python-Flask einrichten.
Richten Sie mit samba einen Dateiserver mit ZeroPi von Friendly Arm ein [Gekaufte Artikel]
Richten Sie mit samba einen Dateiserver mit ZeroPi von Friendly Arm ein [Persönlicher Import]
Richten Sie einen Webserver mit CentOS7 + Anaconda + Django + Apache ein
Richten Sie mit Tensorflow einen Knoten für MNIST auf ROS ein
So richten Sie SVM mit Optuna ein
Richten Sie einen Server ein, der mehrere Verbindungen gleichzeitig verarbeitet
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
Schreiben Sie einen TCP-Server mit dem SocketServer-Modul
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
Richten Sie eine Python-Entwicklungsumgebung auf Marvericks ein
Bereiten Sie einen Pseudo-API-Server mit GitHub-Aktionen vor
Richten Sie eine Entwicklungsumgebung für die Verarbeitung natürlicher Sprache ein
Mailman liefert alle E-Mails, die von einem bestimmten Mailserver gesendet wurden
Erstellen Sie mit GitHub Pages einen Pseudo-REST-API-Server
Lernen eines neuronalen Netzes mit Chainer - Erstellen eines Web-API-Servers
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Richten Sie mit Sublime Text 2 eine Python-Entwicklungsumgebung ein
Wenn es schwierig ist, beim Senden von E-Mails mit Python lokal einen SMTP-Server einzurichten.
So richten Sie einen einfachen SMTP-Server ein, der lokal in Python getestet werden kann
Richten Sie Jetson Nano ein
Richten Sie eine Python-Entwicklungsumgebung mit Visual Studio Code ein
SSH-Verbindung zu einem privaten Server über einen Plattformserver in EC2
Erstellen Sie mit hug einen Web-API-Server mit explosiver Geschwindigkeit
Legen Sie den Google Cloud-Dienstkontoschlüssel in Heroku fest
Lassen Sie uns ein Überlebensvorhersagemodell für Titanic-Passagiere einrichten
Erfassung von Board-Informationen Python 3 Edition (Ein Rang-Up-Set)
Richten Sie Ihren eigenen Webserver in Ihrem Pepper-App-Projekt ein
Laden Sie den mit Gunicorn eingerichteten Server neu, wenn Sie den Code ändern