mailserver
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| mailserver [2018-06-25 10:48:11] – [Fehlermeldungen] manfred | mailserver [2025-05-28 19:26:36] (aktuell) – [Mails über seinen Provider versenden] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Mailserver ====== | ||
| + | |||
| + | * [[::Mail]] | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * **[[https:// | ||
| + | |||
| + | |||
| + | **__MTA__** ([[https:// | ||
| + | Nimmt E-Mails vom Client entgegen und leitet sie an andere Mailserver weiter | ||
| + | Nimmt E-Mails von anderen Servern entgegen und leitet diese E-Mails an den MDA weiter | ||
| + | => Transportaufgaben | ||
| + | |||
| + | ^ Typ ^ Beschreibung ^ Einsatzszenarien ^ | ||
| + | ^ " | ||
| + | ^ " | ||
| + | ^ " | ||
| + | ^ "Local only" | ||
| + | |||
| + | |||
| + | **__MDA__** (Dovecot): | ||
| + | „Einsortierung“ der ankommenden E-Mails in die korrekten Postfächer | ||
| + | => „Logistik“ | ||
| + | |||
| + | **__IMAP Server__** (Dovecot): | ||
| + | Gibt auf Anfrage den Inhalt der Mailbox zurück | ||
| + | Abgleich der Mailbox über mehrere Geräte hinweg | ||
| + | => Speicher-/ | ||
| + | |||
| + | |||
| + | ===== Mails über seinen Provider versenden ===== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | <code bash Postfix SMTP Relay auf FreeBSD 14.2> | ||
| + | cd / | ||
| + | make clean | ||
| + | make config | ||
| + | >> | ||
| + | make install | ||
| + | make clean | ||
| + | |||
| + | vim / | ||
| + | postfix_enable=" | ||
| + | sendmail_enable=" | ||
| + | |||
| + | vim / | ||
| + | daily_clean_hoststat_enable=" | ||
| + | daily_status_mail_rejects_enable=" | ||
| + | daily_status_include_submit_mailq=" | ||
| + | daily_submit_queuerun=" | ||
| + | |||
| + | vim / | ||
| + | mynetworks_style = host | ||
| + | myorigin = example.com | ||
| + | relayhost = [smtp.example.com]: | ||
| + | sender_canonical_maps = regexp:/ | ||
| + | smtp_sasl_auth_enable = yes | ||
| + | smtp_sasl_mechanism_filter = plain, login | ||
| + | smtp_sasl_password_maps = hash:/ | ||
| + | # | ||
| + | smtp_sasl_security_options = noanonymous | ||
| + | smtp_tls_security_level = secure | ||
| + | smtp_tls_wrappermode = yes | ||
| + | |||
| + | touch / | ||
| + | chmod 0600 / | ||
| + | vim / | ||
| + | /^.*$/ noreply@example.com | ||
| + | |||
| + | touch / | ||
| + | chmod 0600 / | ||
| + | vim / | ||
| + | [smtp.example.com]: | ||
| + | |||
| + | postmap / | ||
| + | postmap / | ||
| + | |||
| + | service postfix restart | ||
| + | |||
| + | # Mail-Queue anzeigen: | ||
| + | mailq | ||
| + | postqueue -p | ||
| + | |||
| + | # Mails aus der Queue löschen: | ||
| + | postsuper -d ALL | ||
| + | postsuper -d " | ||
| + | |||
| + | # Test-Mail abschicken (oneliner): | ||
| + | printf "From: sender@example.com\nTo: | ||
| + | |||
| + | # Test-Mail abschicken: | ||
| + | cat << " | ||
| + | From: sender@example.com | ||
| + | To: recipient@example.com | ||
| + | Subject: Test | ||
| + | |||
| + | test body | ||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Sieve ===== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ===== S/ | ||
| + | |||
| + | * [[einzelne_dateien_mit_openssl_verschluesseln# | ||
| + | * __[[https:// | ||
| + | * **[[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ==== mit openssl ==== | ||
| + | |||
| + | E-Mail-Text (Body) mit '' | ||
| + | > openssl smime -encrypt -des3 -out message_encrypted.txt zertifikat.cer < message.txt | ||
| + | |||
| + | so wird auch gleich noch der Header (" | ||
| + | > openssl smime -encrypt -des3 -out message_encrypted.eml -from absender@domain1.tld -to empfaenger@domain2.tld -subject "Eine geheime Nachricht" | ||
| + | |||
| + | |||
| + | ==== mit Content-Filter im Postfix ==== | ||
| + | |||
| + | Postfix bietet verschiedene Möglichkeiten, | ||
| + | |||
| + | Angenommen, es existiert ein Skript ''/ | ||
| + | |||
| + | Um dieses Skript als Filter zu verwenden, muss zuerst in ''/ | ||
| + | |||
| + | > vi / | ||
| + | ... | ||
| + | meinfilter unix - n n - 2 pipe | ||
| + | flags=Rq user=filter null_sender= | ||
| + | argv=/ | ||
| + | ... | ||
| + | |||
| + | Dadurch existiert ein neuer Transport-Mechanismus mit dem Namen " | ||
| + | |||
| + | Die Parameter für das Skript ( "'' | ||
| + | |||
| + | Zusätzlich wird in der Postfix-Konfiguration für den neuen Transportmechanismus festgelegt, dass er für jeden einzelnen Empfänger einer Email separat aufgerufen werden muss. Das kostet zwar Performance, | ||
| + | > vi / | ||
| + | ... | ||
| + | # meinfilter benötigt alle recipients einzeln | ||
| + | meinfilter_destination_recipient_limit = 1 | ||
| + | ... | ||
| + | |||
| + | |||
| + | === Das Filter-Skript === | ||
| + | |||
| + | Das Filter-Skript soll die Email auf der Standard-Eingabe entgegennehmen, | ||
| + | <file bash / | ||
| + | #!/bin/bash | ||
| + | |||
| + | WORKDIR="/ | ||
| + | SENDMAIL="/ | ||
| + | CERTS="/ | ||
| + | EX_UNAVAILABLE=69 | ||
| + | SENDER=" | ||
| + | RECIPIENT=" | ||
| + | |||
| + | if test -f " | ||
| + | |||
| + | MESSAGEFILE=" | ||
| + | |||
| + | trap "rm -f $MESSAGEFILE; | ||
| + | |||
| + | umask 077 | ||
| + | |||
| + | cat > $MESSAGEFILE || { echo Cannot save mail to file; exit $EX_UNAVAILABLE; | ||
| + | |||
| + | SUBJECT=" | ||
| + | |||
| + | openssl smime -encrypt -des3 -out $MESSAGEFILE.encrypted -from $SENDER -to $RECIPIENT -subject " | ||
| + | |||
| + | $SENDMAIL " | ||
| + | exit $? | ||
| + | else | ||
| + | cat | $SENDMAIL " | ||
| + | exit $? | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | __Falls ein Email-Empfänger mit der Adresse '' | ||
| + | Wird im Skript eine entsprechende Datei gefunden, wird die Email per '' | ||
| + | Ist kein Zertifikat hinterlegt, wird die Email ungefiltert an das sendmail-Kommando übergeben. | ||
| + | |||
| + | |||
| + | === Verschlüsselung aktivieren === | ||
| + | |||
| + | > vi / | ||
| + | ... | ||
| + | smtp inet n - - - - smtpd -o content_filter=meinfilter: | ||
| + | meinfilter unix - n n - 2 pipe | ||
| + | flags=Rq user=filter null_sender= | ||
| + | argv=/ | ||
| + | ... | ||
| + | |||
| + | Für genauere Infos siehe "man 5 master" | ||
| + | |||
| + | |||
| + | ===== Mailserver mit FreeBSD ===== | ||
| + | |||
| + | * [[Dovecot + Sieve]] | ||
| + | * [[Dovecot-System-User]] | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | **Dovecot-Sieve muss vor Postfix installiert werden, sonst wird Dovecot ohne Sieve-Unterstützung als Abhängigkeit automatisch installiert!** | ||
| + | |||
| + | * [[Postfix]] | ||
| + | |||
| + | |||
| + | ==== SSL-Schlüssel ==== | ||
| + | |||
| + | Sowohl Dovecot als auch Postfix sollte man ein SSL-Schlüssel/ | ||
| + | * Dovecot für | ||
| + | * POP3S | ||
| + | * IMAPS | ||
| + | * Postfix für | ||
| + | * TLS | ||
| + | |||
| + | Wie das geht, steht hier: [[:: | ||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | === weitere Links === | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | |||
| + | ===== Mail (Ubuntu 20.04 LTS) ===== | ||
| + | |||
| + | Installation: | ||
| + | root@linux: | ||
| + | |||
| + | E-Mail-Test: | ||
| + | fritz@linux: | ||
| + | | ||
| + | Ob eine E-Mail angekommen ist, kann man an diesen beiden Dateien sehen: | ||
| + | fritz@linux: | ||
| + | -rw------- 1 fritz fritz 0 Dec 28 17:21 / | ||
| + | -rw------- 1 fritz mail 464 Dec 28 17:22 / | ||
| + | |||
| + | E-Mail lesen: | ||
| + | fritz@linux: | ||
| + | "/ | ||
| + | >N 1 fritz@linux.lan Mon Dec 28 17:22 13/ | ||
| + | ? | ||
| + | |||
| + | Mit einem Druck auf " | ||
| + | Return-Path: | ||
| + | X-Original-To: | ||
| + | Delivered-To: | ||
| + | Received: by linux.lan (Postfix, from userid 1001) | ||
| + | id 6BDCA10064B; | ||
| + | Subject: Test001 | ||
| + | To: < | ||
| + | X-Mailer: mail (GNU Mailutils 3.7) | ||
| + | Message-Id: < | ||
| + | Date: Mon, 28 Dec 2020 17:22:06 +0100 (CET) | ||
| + | From: fritz@linux.lan | ||
| + | | ||
| + | Test001 | ||
| + | ? | ||
| + | |||
| + | Mit " | ||
| + | ? q | ||
| + | |||
| + | |||
| + | ===== Fehlermeldungen ===== | ||
| + | |||
| + | bei dieser Meldung im Log, ist das Limit für die maximale Mail-Größe (beim Postfix '' | ||
| + | ... smtp: Failed: 452 4.3.1 Insufficient system storage | ||
| + | |||
| + | oder die Anzahl der Mails in der Warteschlange ist zu groß: | ||
| + | # ls / | ||
| + | bash: /bin/ls: Die Argumentliste ist zu lang | ||
| + | 0 | ||
| + | | ||
| + | # for i in / | ||
| + | 63538 | ||
| + | |||
