Linux.postfix: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Root (Diskussion | Beiträge) (→DMARC) |
|||
(37 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Ziel == | |||
* Kompletter Mail - Server, der von innen wie von aussen kontaktiert werden kann (via pop3,smtp). Er soll für mehrere Domain-Namen und noch mehr Benutzer (alle auf die eigene ServerIP gebunden) die Post verwalten und natürlich kein offenes Relay sein. | |||
== Voraussetzungen == | == Voraussetzungen == | ||
* ein Linux Server mit fester IP Adresse | === Feste IP === | ||
* ein Linux Server mit fester IP Adresse. Meine, bei t-com bestellte feste IP ist z.B. | |||
217.91.31.84 | |||
* Du legst eine Domain auf diese IP, das nennen wir ab jetzt <MailAgentDomain> | |||
=== PTR Record === | |||
* einen PTR Eintrag deiner IP Adresse, ab jetzt <ReverseHost> bezeichnet | |||
* einen PTR Eintrag deiner IP Adresse, ab jetzt ReverseHost bezeichnet | |||
host -t PTR <DeineFesteIP> | host -t PTR <DeineFesteIP> | ||
# Bei mir ergibt das z.B. pd95b1f54.dip0.t-ipconnect.de | |||
# Leider ist es nicht möglich diesen Eintrag zu belassen, das einigen Mail Server, | |||
# so z.B. aol diese Art von Hostnamen so gar nicht mögen. Die meinen dann, man hätte | |||
# einen dynamische IP Adresse, und man versuche sich als Mailserver aufzuführen. Leider | |||
# löst der Ziel- Mailserver die Absender Domain nicht auf, sonst würde er erkennen | |||
# das die IP der Versende-Identität sowie die Identität des senders decken, also | |||
# offensichtlich kein relay verwendet wird. Meiner Meinung nach unberechtigt der | |||
# Ablehnende Fehlercode : | |||
# | |||
# 554-: (DNS:B2) http://postmaster.info.aol.com/errors/554dnsb2.html | |||
# | |||
# Fehler 1) | |||
# | |||
# Bezieht man von der t-com eine feste IP, kommt die aus einem zweifelhaften pool, | |||
# man sollte diese mit einem schönen PTR Eintrag versehen, so z.B. | |||
# HSGWBSGA.t-com-festeip.de | |||
# dann müsste man keinen eigenen PTR Eintrag ersinnen. | |||
# | |||
# Fehler 2) | |||
# | |||
# "riecht" der PTR Eintrag nach dynamischer IP sollte die püfung der Versende | |||
# Identität erfolgen. Ist der A Eintrag wieder die selbe Adresse, so ist das ja | |||
# wohl mehr als Beweis, da die IP Adresse und PTR 100% OK ist. | |||
# | |||
* bei allen | === MX Record === | ||
* bei allen Domains die der Mailserver hosten soll, muss der ReverseHost von oben als der MX Eintrag gemacht sein. So bekommen wir einen ganz soliden MX Eintrag, der den neuesten Forderungen (PTR-fest) entspricht. | |||
host -t MX <DeineMailDomain> | host -t MX <DeineMailDomain> | ||
# sollte als Ergebnis also pd95b1f54.dip0.t-ipconnect.de | |||
# ergeben! | |||
=== SPF Record === | |||
* Es ist ein TXT Record in <DeineMailDomain> der aussagt WER zuständig für den ausgehenden Mailversand ist | |||
* Es verbessert nicht die Anzahl der Spam-Mails, die Dich erreichen | |||
* Es verbessert aber die Anzahl der Spam-Mails in der Welt, die als Absender <DeineMailDomain> missbrauchen, da Du hiermit erklärt hast, welche SendeServer Du benutzt. Alle anderen gelten als nicht berechtigt. | |||
* In unserem Fall, ist der berechtigte unser MX, sonst niemand: | |||
** <code>v=spf1 mx -all</code> | |||
* Test mit http://spf.myisp.ch/ | |||
=== DKIM === | |||
* https://kofler.info/dkim-konfiguration-fuer-postfix/ | |||
=== DMARC === | |||
* Typischer Snake-Oil Mechanismus der nur scheinbar die Sicherheit erhöht, der _dmarc TXT Record muss bei der Mail-Domain hinzugemacht werden, nicht bei der mx Domain | |||
* https://support.google.com/a/answer/2466563?sjid=13818195432106118449-EU | |||
_dmarc TXT v=DMARC1; p=reject; rua=mailto:postmaster@orgamon.org | |||
== Aktivierung der notwendigen Dienste == | == Aktivierung der notwendigen Dienste == | ||
Neuere Implementierung hier: [[Raspberrypi.mail]] | |||
Wir verwenden das bebliebte Postfix Programm. Es ist sehr umfassend, dennoch kann man die Schritte, die man braucht um alles aufzusetzen (nach Wochen der Forschung) an 2 Händen abzählen. Also wie immer: Die Details später, erst mal soll es funktionieren! | |||
zypper install cyrus-sasl-saslauthd | |||
chkconfig --add postfix | chkconfig --add postfix | ||
chkconfig --add saslauthd | chkconfig --add saslauthd | ||
rcpostfix start | rcpostfix start | ||
rcsaslauthd start | rcsaslauthd start | ||
== main.cf == | |||
<code> | |||
queue_directory = /var/spool/postfix | |||
command_directory = /usr/sbin | |||
daemon_directory = /usr/lib/postfix | |||
mail_owner = postfix | |||
myorigin = $myhostname | |||
inet_interfaces = all | |||
unknown_local_recipient_reject_code = 550 | |||
mynetworks_style = subnet | |||
mynetworks = 192.168.115.0/8, 127.0.0.0/8 | |||
smtpd_banner = $myhostname ESMTP $mail_name OrgaMon(tm) | |||
debug_peer_level = 2 | |||
debugger_command = | |||
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin | |||
xxgdb $daemon_directory/$process_name $process_id & sleep 5 | |||
sendmail_path = /usr/sbin/sendmail | |||
newaliases_path = /usr/bin/newaliases | |||
mailq_path = /usr/bin/mailq | |||
setgid_group = maildrop | |||
html_directory = /usr/share/doc/packages/postfix/html | |||
manpage_directory = /usr/share/man | |||
sample_directory = /usr/share/doc/packages/postfix/samples | |||
readme_directory = /usr/share/doc/packages/postfix/README_FILES | |||
biff = no | |||
mail_spool_directory = /var/mail | |||
canonical_maps = hash:/etc/postfix/canonical | |||
virtual_maps = hash:/etc/postfix/virtual | |||
relocated_maps = hash:/etc/postfix/relocated | |||
transport_maps = hash:/etc/postfix/transport | |||
sender_canonical_maps = hash:/etc/postfix/sender_canonical | |||
masquerade_exceptions = root | |||
masquerade_classes = envelope_sender, header_sender, header_recipient | |||
program_directory = /usr/lib/postfix | |||
masquerade_domains = | |||
myhostname = mx.orgamon.org | |||
mydomain = orgamon.org | |||
mydestination = localhost, $myhostname, localhost.$mydomain | |||
local_recipient_maps = $alias_maps unix:passwd.byname | |||
defer_transports = | |||
disable_dns_lookups = no | |||
relayhost = | |||
mailbox_command = | |||
mailbox_transport = | |||
smtpd_sender_restrictions = hash:/etc/postfix/access | |||
smtpd_client_restrictions = | |||
smtpd_helo_required = no | |||
smtpd_helo_restrictions = | |||
strict_rfc821_envelopes = no | |||
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination | |||
smtpd_sasl_auth_enable = yes | |||
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd | |||
smtpd_sasl_local_domain = raib90 | |||
smtpd_sasl_security_options = noanonymous | |||
smtpd_sender_login_maps = | |||
broken_sasl_auth_clients = yes | |||
smtpd_use_tls = no | |||
smtp_use_tls = no | |||
alias_maps = hash:/etc/aliases | |||
mailbox_size_limit = 99999999 | |||
message_size_limit = 99999999 | |||
</code> | |||
== Anlegen eines neuen eMail Postfaches (und die Zuordnung zu einem Benutzer) == | == Anlegen eines neuen eMail Postfaches (und die Zuordnung zu einem Benutzer) == | ||
Zeile 33: | Zeile 157: | ||
POP3 Konto ist der Benutzername | POP3 Konto ist der Benutzername | ||
POP3 Passwort ist das normale Password | POP3 Passwort ist das normale Password | ||
Die Gruppenrechte entsprechend völligst minimal einstellen. Einen Login verhindern, diese Benutzer dürfen ausschliesslich via popper ihre eMails abholen! | Die Gruppenrechte entsprechend völligst minimal einstellen. | ||
[x] Leeres Home | |||
Standard-Gruppe "postfix" | |||
Gruppenzugehörigkeit nur "postfix!" | |||
Einen Login verhindern, diese Benutzer dürfen ausschliesslich via popper ihre eMails abholen! | |||
-- Mailname korrekt einstellen | -- Mailname korrekt einstellen | ||
Zeile 40: | Zeile 168: | ||
domain.tld DOMAIN | domain.tld DOMAIN | ||
vorname.nachname@domain.tld Benutzername | vorname.nachname@domain.tld Benutzername@localhost | ||
# Bemerkung: | # Bemerkung: | ||
Zeile 50: | Zeile 178: | ||
-- das ganze compilieren mit postmap | -- das ganze compilieren mit postmap | ||
postmap /etc/postfix/virtual | postmap /etc/postfix/virtual | ||
-- die ganzen Änderungen jetzt bekannt machen | -- die ganzen Änderungen jetzt bekannt machen | ||
postfix reload | postfix reload | ||
Zeile 67: | Zeile 191: | ||
domain.tld DOMAIN | domain.tld DOMAIN | ||
name@domain.tld weiter@ | name@domain.tld weiter.leitungs.ziel@fremder-domain.tld | ||
postmap /etc/postfix/virtual | postmap /etc/postfix/virtual | ||
== POP3 Dienst starten == | |||
* Damit die eMails auch abgeholt werden können muss im YaST bei den Netzwerk-Diensten (inetd/xinetd) noch der "pop3" "(q)popper" Dienst aktiviert werden. | |||
== Diagnose Möglichkeiten == | |||
Zum Test braucht man unbedingt eine funktionierende Mail Adresse, die von einem externen Server aus operiert. Mit dieser identität kann man nun den eigenen Mail Server auf seine Funktion hin testen. | |||
/var/mail | |||
# in diesem Verzeichnis befinden sich die Mail aller Benutzer (INBOX). | |||
# Pro Postfach wird eine Datei mit dem Dateinamen = Benutzername | |||
# geführt. Ist diese > 0 Bytes hat der Benutzer unabgerufenen Mail | |||
# Dateidatum und Uhrzeit zeigt den Zeitpunkt der Zustellung der | |||
# letzten Mail. | |||
/var/log/mail.* | |||
# wichtige Informationsquelle bei Störungen | |||
postconf <ParameterName> | |||
# Anzeigen des im Moment gültigen Wertes einer Einstellung. |
Aktuelle Version vom 4. November 2024, 16:45 Uhr
Ziel
- Kompletter Mail - Server, der von innen wie von aussen kontaktiert werden kann (via pop3,smtp). Er soll für mehrere Domain-Namen und noch mehr Benutzer (alle auf die eigene ServerIP gebunden) die Post verwalten und natürlich kein offenes Relay sein.
Voraussetzungen
Feste IP
- ein Linux Server mit fester IP Adresse. Meine, bei t-com bestellte feste IP ist z.B.
217.91.31.84
- Du legst eine Domain auf diese IP, das nennen wir ab jetzt <MailAgentDomain>
PTR Record
- einen PTR Eintrag deiner IP Adresse, ab jetzt <ReverseHost> bezeichnet
host -t PTR <DeineFesteIP> # Bei mir ergibt das z.B. pd95b1f54.dip0.t-ipconnect.de # Leider ist es nicht möglich diesen Eintrag zu belassen, das einigen Mail Server, # so z.B. aol diese Art von Hostnamen so gar nicht mögen. Die meinen dann, man hätte # einen dynamische IP Adresse, und man versuche sich als Mailserver aufzuführen. Leider # löst der Ziel- Mailserver die Absender Domain nicht auf, sonst würde er erkennen # das die IP der Versende-Identität sowie die Identität des senders decken, also # offensichtlich kein relay verwendet wird. Meiner Meinung nach unberechtigt der # Ablehnende Fehlercode : # # 554-: (DNS:B2) http://postmaster.info.aol.com/errors/554dnsb2.html # # Fehler 1) # # Bezieht man von der t-com eine feste IP, kommt die aus einem zweifelhaften pool, # man sollte diese mit einem schönen PTR Eintrag versehen, so z.B. # HSGWBSGA.t-com-festeip.de # dann müsste man keinen eigenen PTR Eintrag ersinnen. # # Fehler 2) # # "riecht" der PTR Eintrag nach dynamischer IP sollte die püfung der Versende # Identität erfolgen. Ist der A Eintrag wieder die selbe Adresse, so ist das ja # wohl mehr als Beweis, da die IP Adresse und PTR 100% OK ist. #
MX Record
- bei allen Domains die der Mailserver hosten soll, muss der ReverseHost von oben als der MX Eintrag gemacht sein. So bekommen wir einen ganz soliden MX Eintrag, der den neuesten Forderungen (PTR-fest) entspricht.
host -t MX <DeineMailDomain> # sollte als Ergebnis also pd95b1f54.dip0.t-ipconnect.de # ergeben!
SPF Record
- Es ist ein TXT Record in <DeineMailDomain> der aussagt WER zuständig für den ausgehenden Mailversand ist
- Es verbessert nicht die Anzahl der Spam-Mails, die Dich erreichen
- Es verbessert aber die Anzahl der Spam-Mails in der Welt, die als Absender <DeineMailDomain> missbrauchen, da Du hiermit erklärt hast, welche SendeServer Du benutzt. Alle anderen gelten als nicht berechtigt.
- In unserem Fall, ist der berechtigte unser MX, sonst niemand:
v=spf1 mx -all
- Test mit http://spf.myisp.ch/
DKIM
DMARC
- Typischer Snake-Oil Mechanismus der nur scheinbar die Sicherheit erhöht, der _dmarc TXT Record muss bei der Mail-Domain hinzugemacht werden, nicht bei der mx Domain
_dmarc TXT v=DMARC1; p=reject; rua=mailto:postmaster@orgamon.org
Aktivierung der notwendigen Dienste
Neuere Implementierung hier: Raspberrypi.mail
Wir verwenden das bebliebte Postfix Programm. Es ist sehr umfassend, dennoch kann man die Schritte, die man braucht um alles aufzusetzen (nach Wochen der Forschung) an 2 Händen abzählen. Also wie immer: Die Details später, erst mal soll es funktionieren!
zypper install cyrus-sasl-saslauthd chkconfig --add postfix chkconfig --add saslauthd rcpostfix start rcsaslauthd start
main.cf
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myorigin = $myhostname
inet_interfaces = all
unknown_local_recipient_reject_code = 550
mynetworks_style = subnet
mynetworks = 192.168.115.0/8, 127.0.0.0/8
smtpd_banner = $myhostname ESMTP $mail_name OrgaMon(tm)
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
html_directory = /usr/share/doc/packages/postfix/html
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/packages/postfix/samples
readme_directory = /usr/share/doc/packages/postfix/README_FILES
biff = no
mail_spool_directory = /var/mail
canonical_maps = hash:/etc/postfix/canonical
virtual_maps = hash:/etc/postfix/virtual
relocated_maps = hash:/etc/postfix/relocated
transport_maps = hash:/etc/postfix/transport
sender_canonical_maps = hash:/etc/postfix/sender_canonical
masquerade_exceptions = root
masquerade_classes = envelope_sender, header_sender, header_recipient
program_directory = /usr/lib/postfix
masquerade_domains =
myhostname = mx.orgamon.org
mydomain = orgamon.org
mydestination = localhost, $myhostname, localhost.$mydomain
local_recipient_maps = $alias_maps unix:passwd.byname
defer_transports =
disable_dns_lookups = no
relayhost =
mailbox_command =
mailbox_transport =
smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_client_restrictions =
smtpd_helo_required = no
smtpd_helo_restrictions =
strict_rfc821_envelopes = no
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sasl_local_domain = raib90
smtpd_sasl_security_options = noanonymous
smtpd_sender_login_maps =
broken_sasl_auth_clients = yes
smtpd_use_tls = no
smtp_use_tls = no
alias_maps = hash:/etc/aliases
mailbox_size_limit = 99999999
message_size_limit = 99999999
Anlegen eines neuen eMail Postfaches (und die Zuordnung zu einem Benutzer)
YaST2->Sicherheit und Benutzer->Benutzer bearbeiten und anlegen <Alt><H>(für Hinzufügen) Daten ensprechende Eintrag: POP3 Konto ist der Benutzername POP3 Passwort ist das normale Password Die Gruppenrechte entsprechend völligst minimal einstellen. [x] Leeres Home Standard-Gruppe "postfix" Gruppenzugehörigkeit nur "postfix!" Einen Login verhindern, diese Benutzer dürfen ausschliesslich via popper ihre eMails abholen! -- Mailname korrekt einstellen joe /etc/postfix/virtual unten Eintragen:
domain.tld DOMAIN vorname.nachname@domain.tld Benutzername@localhost
# Bemerkung: # ========== # Die erste Zeile "domain.tld" muss nur 1x pro gehostetem Domainname # als "überschrift" über alle User dieser Domain eingetragen werden # damit wird postfix klargemacht, dass es für diese Domains zuständig # ist. -- das ganze compilieren mit postmap postmap /etc/postfix/virtual -- die ganzen Änderungen jetzt bekannt machen postfix reload
Anlegen einer Weiterleitung
Für eine reine Weiterleitung brauchen wir keinen neuen Benutzer anlegen. Es reicht ein Eintrag in die "virtual".
joe /etc/postfix/virtual domain.tld DOMAIN name@domain.tld weiter.leitungs.ziel@fremder-domain.tld postmap /etc/postfix/virtual
POP3 Dienst starten
- Damit die eMails auch abgeholt werden können muss im YaST bei den Netzwerk-Diensten (inetd/xinetd) noch der "pop3" "(q)popper" Dienst aktiviert werden.
Diagnose Möglichkeiten
Zum Test braucht man unbedingt eine funktionierende Mail Adresse, die von einem externen Server aus operiert. Mit dieser identität kann man nun den eigenen Mail Server auf seine Funktion hin testen.
/var/mail # in diesem Verzeichnis befinden sich die Mail aller Benutzer (INBOX). # Pro Postfach wird eine Datei mit dem Dateinamen = Benutzername # geführt. Ist diese > 0 Bytes hat der Benutzer unabgerufenen Mail # Dateidatum und Uhrzeit zeigt den Zeitpunkt der Zustellung der # letzten Mail.
/var/log/mail.* # wichtige Informationsquelle bei Störungen
postconf <ParameterName> # Anzeigen des im Moment gültigen Wertes einer Einstellung.