Linux.postfix: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(40 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 ===


  meine, bei t-com bestellte feste IP ist z.B.
* 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 "@" Domains die der Mailserver hosten soll, muss der ReverseHost als MX Eintrag gemacht sein:
=== 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


* Aktivierung der notwendigen Dienste
_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 postfix
   chkconfig --add saslauthd
   chkconfig --add saslauthd
Zeile 19: Zeile 86:
   rcsaslauthd start
   rcsaslauthd start


* Anlegen eines neuen eMail Postfaches (und die Zuordnung zu einem Benutzer)
== 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) ==


   YaST2->Sicherheit und Benutzer->Benutzer bearbeiten und anlegen
   YaST2->Sicherheit und Benutzer->Benutzer bearbeiten und anlegen
Zeile 25: Zeile 156:
   Daten ensprechende Eintrag:
   Daten ensprechende Eintrag:
   POP3 Konto ist der Benutzername
   POP3 Konto ist der Benutzername
   POP3 Passwort ist das nirmale 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
   joe /etc/postfix/virtual
   joe /etc/postfix/virtual
   unten Eintragen:
   unten Eintragen:
   vorname.nachname@domain.tld        Benutzername
 
  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
   -- das ganze compilieren mit postmap
   postmap /etc/postfix/virtual
   postmap /etc/postfix/virtual
    
    
  -- sollte ein neuer Domain dazugekommen sein, muss man den bekannt machen!
  -- der Mailserver muss sich da angesprochen fühlen.
  -- also in main.cf
  mydestination = .,.,.,., domain.tld
   -- die ganzen Änderungen jetzt bekannt machen
   -- die ganzen Änderungen jetzt bekannt machen
   postfix reload
   postfix reload


* Anlegen einer Weiterleitung
== 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
   joe /etc/postfix/virtual
  domain.tld            DOMAIN
  name@domain.tld      weiter.leitungs.ziel@fremder-domain.tld
  postmap /etc/postfix/virtual


  domain.tld            DOMAIN
== POP3 Dienst starten ==
  name@domain.tld      weiter@fremderdomain.tld
 
* 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


  postmap /etc/postfix/virtual
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.