[LINUX] Ich wollte schnell einen Mailserver erstellen, der mit postfix + dovecot auf EC2 frei verwendet werden kann

Einführung

Ich wollte einen Mailserver, den ich frei nutzen kann Das war alles was ich wollte Das wäre so ...

Mir wurde gesagt, welche Zahl der Sud ist, Ich habe versucht, einen Mailserver auf EC2 aufzubauen

Es gibt viele ähnliche Artikel, Als Aufzeichnung dessen, was ich getan habe Ich werde auch einen neuen ähnlichen Artikel erstellen

Ich hoffe, dass ein Teil irgendwo nützlich sein wird

Vorbereitung 1

Starten Sie eine Instanz auf EC2 von AWS Diesmal habe ich es mit t2.micro von Free Frame gebaut Das Betriebssystem verwendet AMAZON LINUX

Öffnen Sie den Port, der eingehend benötigt wird, in der Sicherheitsgruppe der erstellten Instanz

POP3	TCP 110	0.0.0.0/0	-
POP3S	TCP 995	0.0.0.0/0	-
IMAPS	TCP 993	0.0.0.0/0	-
SSH     TCP 22  0.0.0.0/0	-
SMTP	TCP 25	0.0.0.0/0	-
IMAP	TCP 143	0.0.0.0/0	-
SMTPS	TCP 465	0.0.0.0/0	-
Benutzerdefiniertes TCP 587 0.0.0.0/0	-

Vorbereitung 2

Diesmal habe ich versucht, den Mailserver anhand der nach Namen erhaltenen Domain zu benennen

Name.com Domain Management DNS, Hinzufügen Ein Datensatz und ein MX-Datensatz der diesmal erstellten Instanz

Ein Rekord Beispiel) A smtp.example.com 11.22.33.44

MX-Aufnahme Beispiel) MX example.com 10 smtp.example.com

AWS Route 53 ist auch ohne Namen möglich

Wenn Sie nur eine E-Mail senden, können Sie diese senden, ohne eine Domain erwerben zu müssen

Ich kenne die Details nicht, weil ich sie noch nicht bestätigt habe.

Postfix-Installation

Stellen Sie mit SSH eine Verbindung zu der oben erstellten Instanz her Update vorerst

yum -y update

Und Postfix-Installation

yum -y install postfix

Bearbeiten Sie die Konfigurationsdatei nach erfolgreicher Installation

# vi /etc/postfix/main.cf
Suchen und bearbeiten Sie den folgenden Teil

myhostname = smtp.example.com

mydomain = exapmle.com

myorigin = $mydomain

inet_interfaces = all

inet_protocols = ipv4

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

smtpd_banner = $myhostname ESMTP unknown

home_mailbox = Maildir/

#Am Ende hinzugefügt
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

message_size_limit = 10485760

# vi /etc/postfix/master.cf
submission inet n       -       n       -       -       smtpd #Kommentar
-o smtpd_sasl_auth_enable=yes #Kommentar

Erstellen Sie automatisch ein Mail-Speicherverzeichnis, wenn ein neuer Mail-sendender Benutzer erstellt wird
# mkdir -p /etc/skel/Maildir/{new,cur,tmp}

# chmod -R 700 /etc/skel/Maildir/

SMTP-Authentifizierungseinstellungen

# yum -y install cyrus-sasl

# chkconfig saslauthd on

# service saslauthd start

Gegenmaßnahmen für E-Mails an unbekannte Benutzer

# vi /etc/postfix/main.cf

#Am Ende hinzugefügt
local_recipient_maps =
luser_relay = unknown_user@localhost

# echo unknown_user: /dev/null >> /etc/aliases
# newaliases 

SMTP-Start

Stoppen Sie, wenn sendmail vorhanden ist
# chkconfig sendmail off

# service sendmail stop


# chkconfig postfix on

# service postfix start

Taubenschlag Installation

# yum -y install dovecot
# vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:~/Maildir #Ändern Sie den Kommentarteil

# vi /etc/dovecot/conf.d/10-auth.conf

disable_plaintext_auth = no #Wechseln Sie zu Nr
auth_mechanisms = plain login #Zu vorhandenem hinzufügen

# vi /etc/dovecot/conf.d/10-master.conf

#Bearbeiten Sie die vorhandene
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

# vi /etc/dovecot/conf.d/10-ssl.conf

ssl = no #Wechseln Sie zu Nr

# chkconfig dovecot on

# service dovecot start

Mail-Benutzer hinzufügen

# useradd user
# passwd user
Legen Sie ein neues Benutzerkennwort fest, setzen Sie es jedoch vorerst auf "Benutzer"

# ls /home/user/Maildir/ #Stellen Sie sicher, dass das Verzeichnis erstellt wurde


Versuchen Sie es im Mail-Sendetest an sich selbst zu senden
# sendmail [email protected]
To:[email protected]
From:[email protected]
Subject:test

myself test.

.

Stellen Sie sicher, dass Sie eine E-Mail haben
#ls /home/user/Maildir/new/

Stellen Sie sicher, dass Sie an dieser Stelle den erforderlichen Port abhören.

# netstat -nl | grep tcp
tcp        0      0 0.0.0.0:587                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:143                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN

Versuchen Sie, mit Mail-Client-Software zu empfangen

Versuchen Sie, die Mail mit einer geeigneten Mail-Software wie Thunderbird zu empfangen

Benutzer: Benutzer E-Mail-Adresse: [email protected] Passwort: Benutzer

Pop-Server: smtp.example.com 110 Port SMTP-Server: smtp.example.com 587 Port

"Normale Passwortauthentifizierung" mit "ohne SSL-Schutz"

Ermöglichen Sie das Senden von E-Mails an Google Mail usw.

Zu diesem Zeitpunkt können Sie E-Mails an sich selbst senden, sollten diese jedoch nicht nach außen senden können.

Sie können also zum Senden von E-Mails an den SMTP-Server von Google weiterleiten

# vi /etc/postfix/main.cf

relayhost = [smtp.gmail.com]:587 #Vorhandenes Teil bearbeiten

#Fügen Sie am Ende mehr hinzu
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
smtp_use_tls = yes

Verwenden Sie Ihr eigenes Google Mail-Konto, um sich bei Google Mail zu authentifizieren

# vi /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 [email protected]:password

Erstellen Sie eine Hash-Datei
# postmap /etc/postfix/sasl_passwd

Stellen Sie ein, dass weniger sichere Apps in Ihrem Google-Konto zulässig sind

https://myaccount.google.com/lesssecureapps

Versuchen Sie, eine Test-E-Mail zu senden

# sendmail [email protected]
To:[email protected]
From:[email protected]
Subject:test

myself test.

.

Schließen Sie ab, wenn die Übertragung erfolgreich ist

Wo ich feststeckte

Konto kann nicht synchronisiert werden

Ursache 1 Es wurde von der FW des Routers gestoppt

Es wurde eine Richtlinie geschrieben, um die externe Kommunikation (25.110.143 usw.) auf dem Unternehmensrouter zu stoppen Ich habe mehrere Stunden gebraucht, um dies zu bemerken, und ich habe nur unnötige Anpassungen vorgenommen.

Ursache 2 Von Sicherheitsgruppe gestoppt

Die Sicherheitsgruppe der EC2-Instanz hatte nicht genügend offene Ports

Wieder habe ich ein paar Stunden verschwendet

Ursache 2 Kompatibilität der Client-Software?

Ich habe dieses Mal versucht, Outlook als Software zum Synchronisieren von Konten zu verwenden, aber es scheint, dass eine Authentifizierung möglich ist, aber ich kann kein Konto erstellen. Die Meldung zu Outlook lautet, dass das Konto aufgrund eines Problems mit dem SMTP-Server nicht erstellt werden konnte. Das Serverprotokoll zu diesem Zeitpunkt lautet wie folgt

Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth: Debug: auth client connected (pid=22036)
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth: Debug: client in:AUTH#0111#011PLAIN#011service=pop3#011session=OZ2Cl9esN+lqmoDo#011lip=172.31.43.165#011rip=106.154.128.232#011lport=110#011rport=59703
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth: Debug: client passdb out: CONT#0111#011
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth: Debug: client in: CONT<hidden>
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth-worker(22037): Debug: Loading modules from directory: /usr/lib64/dovecot/auth
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth-worker(22037): Debug: Module loaded: /usr/lib64/dovecot/auth/lib20_auth_var_expand_crypt.so
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth-worker(22037): Debug: Module loaded: /usr/lib64/dovecot/auth/libdriver_sqlite.so
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth-worker(22037): Debug: pam(user,106.154.128.232,<OZ2Cl9esN+lqmoDo>): lookup service=dovecot
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth-worker(22037): Debug: pam(user,106.154.128.232,<OZ2Cl9esN+lqmoDo>): #1/1 style=1 msg=Password:
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth: Debug: client passdb out: OK#0111#011user=user#011
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth: Debug: master in: REQUEST#0111203240961#01122036#0111#011f2ecb8ac5535457503d22d0e493b0733#011session_pid=22038
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth-worker(22037): Debug: passwd(user,106.154.128.232,<OZ2Cl9esN+lqmoDo>): lookup
Aug 14 14:54:03 ip-172-31-43-165 dovecot: auth: Debug: master userdb out: USER#0111203240961#011user#011system_groups_user=user#011uid=502#011gid=502#011home=/home/user
Aug 14 14:54:03 ip-172-31-43-165 dovecot: pop3-login: Login: user=<user>, method=PLAIN, rip=106.154.128.232, lip=172.31.43.165, mpid=22038, session=<OZ2Cl9esN+lqmoDo>
Aug 14 14:54:03 ip-172-31-43-165 dovecot: pop3(user): Debug: Effective uid=502, gid=502, home=/home/user
Aug 14 14:54:03 ip-172-31-43-165 dovecot: pop3(user): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=maildir:~/Maildir
Aug 14 14:54:03 ip-172-31-43-165 dovecot: pop3(user): Debug: maildir++: root=/home/user/Maildir, index=, indexpvt=, control=, inbox=/home/user/Maildir, alt=
Aug 14 14:54:03 ip-172-31-43-165 dovecot: pop3(user): Debug: INBOX: Mailbox opened because: POP3 INBOX
Aug 14 14:54:03 ip-172-31-43-165 dovecot: pop3(user): Disconnected: Logged out top=0/0, retr=0/0, del=0/13, size=15260

Ich fragte mich, warum es zu funktionieren schien und googelte Einige Leute sagen, dass Outlook nicht funktioniert, aber Thunderbird funktioniert. Als ich Thunderbird in meinen PC steckte und es versuchte, Es funktionierte

Die Einstellungen für Outlook scheinen unterschiedlich zu sein

Wieder (weggelassen)

Referenzseite

[EC2] Aufbau eines Mailservers (Postfix + Dovecot) Mail-Server-Aufbau (Postfix + Dovecot) Detaillierte Erklärung mit Experimenten auf SMTP-Server und POP-Server E-Mail mit Postfix an Google Mail senden

Recommended Posts

Ich wollte schnell einen Mailserver erstellen, der mit postfix + dovecot auf EC2 frei verwendet werden kann
Ich habe versucht, eine Serverumgebung zu erstellen, die unter Windows 10 ausgeführt wird
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Konvertieren Sie Bilder aus dem FlyCapture SDK in ein Formular, das mit openCV verwendet werden kann
Ich wollte eine intelligente Präsentation mit Jupyter Notebook + nb present erstellen
Ich habe ein Shuffle gemacht, das mit Python zurückgesetzt (zurückgesetzt) werden kann
Ich habe versucht, es zu erweitern, damit die Datenbank mit der Analysesoftware von Wiire verwendet werden kann
Ich habe eine generische Python-Projektvorlage erstellt
Erstellen Sie eine Web-App, die mit Plotly Dash einfach visualisiert werden kann
[Kann in 10 Minuten erledigt werden] Erstellen Sie schnell eine lokale Website mit Django
Ich wollte ein Programm mit umgekehrter polnischer Notation in Python erstellen (Bestimmung, ob eine Zeichenfolge in einen numerischen Wert konvertiert werden kann)
Hinweise zum Erstellen von Zahlen, die mit matplotlib in Zeitschriften veröffentlicht werden können
Ich habe versucht, eine Klasse zu erstellen, mit der Json in Python problemlos serialisiert werden kann
Ich habe versucht, die Operationen zusammenzufassen, die wahrscheinlich mit numpy-stl verwendet werden
So installieren Sie die Python-Bibliothek, die von Pharmaunternehmen verwendet werden kann
Dateitypen, die mit Go verwendet werden können
Spielen Sie den Server mit zwei PCs
Ich habe versucht, es ein- und auszuschalten, indem ich "Ein Plug-In erstellen, das Leerzeichen mit Sublime Text 2 in voller Breite hervorhebt" eingestellt habe.
Ich habe versucht, mit einem Foto einfach ein hochpräzises 3D-Bild zu erstellen [1]. (Die Tiefe kann jetzt in PNG bearbeitet werden.)
[Mac] Ich möchte einen einfachen HTTP-Server erstellen, auf dem CGI mit Python ausgeführt wird
[Python] Ich habe versucht, automatisch einen täglichen Bericht über YWT mit Outlook-Mail zu erstellen
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
Ich habe versucht, eine Memo-App zu erstellen, die Pomodoro sein kann, aber eine Reflexionsaufzeichnung
Schritte zum schnellen Erstellen einer umfassenden Lernumgebung auf einem Mac mit TensorFlow und OpenCV
So erstellen Sie eine Eigenschaft von Beziehungen, die durch bestimmte Bedingungen vorab abgerufen werden kann
Mit Raspberry Pi erstellter Dateifreigabeserver, der für Remote-Arbeiten verwendet werden kann
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
Ich möchte manuell eine Legende mit matplotlib erstellen
[Django] Über Benutzer, die für Vorlagen verwendet werden können
Einfache Statistiken, mit denen die Auswirkungen von Maßnahmen auf EG-Standorte und Codes analysiert werden können, die in Jupyter-Notebooks verwendet werden können
Ich habe ein Tool erstellt, um automatisch ein Zustandsübergangsdiagramm zu generieren, das sowohl für die Webentwicklung als auch für die Anwendungsentwicklung verwendet werden kann
Eine Geschichte, die Django mit einer Funktion wie before_action ausführen wollte, die in Schienen verwendet wird [Anfänger lernt Python mit einem Nachschlagewerk]
So richten Sie einen einfachen SMTP-Server ein, der lokal in Python getestet werden kann
Ich habe ein grobes Ansible-Modul geschrieben, mit dem Sie Virtualenv verwenden können, indem Sie Pythonz installieren.
[Atcoder] [C ++] Ich habe ein Testautomatisierungstool erstellt, das während des Wettbewerbs verwendet werden kann
Ich habe ein Skript geschrieben, um mit AWS Lambda + Python 2.7 schnell eine Entwicklungsumgebung für Twitter Bot zu erstellen
SSH-Verbindung zu einem privaten Server über einen Plattformserver in EC2
Ich habe versucht, automatisch einen Bericht mit der Markov-Kette zu erstellen
Ich habe schnell ein Programm geschrieben, um DI mit Python zu lernen
Hören Sie sich einen Roman an, der auf Amazon Polly erscheinen wird
Erstellen Sie eine Web-API, die Bilder mit Django liefern kann
Ich habe die Vorbehandlung untersucht, die mit PyCaret durchgeführt werden kann
Ich habe ein Plug-In erstellt, das "Daruma-san Fell" mit Minecraft ausführen kann
Lassen Sie uns ein Diagramm erstellen, auf das mit IPython geklickt werden kann
[Flask] Ich habe versucht, die "Docker-Compose-Konfiguration" zusammenzufassen, die schnell für Webanwendungen erstellt werden kann
[Python] Zeichnen Sie mit Plotly Höhendaten auf eine sphärische Oberfläche und zeichnen Sie einen Globus, der rund und rund gedreht werden kann
Ich habe es gemacht, weil ich JSON-Daten möchte, die in Demos und Prototypen frei verwendet werden können
Verstehen Sie die Wahrscheinlichkeiten und Statistiken, die für das Fortschrittsmanagement mit einem Python-Programm verwendet werden können
Über die Sache, dass Fackelzusammenfassung wirklich verwendet werden kann, wenn ein Modell mit Pytorch erstellt wird
Schnelle Schritte zum Erstellen einer maschinellen Lernumgebung mit Jupyter Notebook unter macOS Sierra mit anaconda
Ich habe versucht, eine SATA-Software-RAID-Konfiguration zu erstellen, die das Betriebssystem unter Ubuntu Server startet
Erstellen Sie mit Selenium ein Programm, mit dem Sie Ihr Lieblingsbild erstellen können
[Python] Erstellen Sie ein Diagramm, das mit Plotly verschoben werden kann
Ich habe ein Paket erstellt, das morphologische Analysegeräte mit Python vergleichen kann
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
Qiskit: Ich möchte eine Schaltung erstellen, die beliebige Zustände erzeugt! !!