Mailserver: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
 
(27 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Die “Internet text messages” waren eine der ersten Anwendungen des Internet. Es war damals eine fantastische Vorstellung, Textnachrichten innerhalb von Sekunden von einem Rechner zu einem anderen über Tausende von Kilometern hinweg zuzustellen.
+
*[[Mailserver-Komplett]]
Heute werden diese text messages E-Mails genannt. Für deren Transport haben sich zwei verschiedene Protokolle herauskristallisiert.
+
*[[Mailserver-Best-Practice]]
Simple Mail Transfer Protocol (SMTP)
+
*[[Openrelay check]]
Unix to Unix Copy (UUCP)
+
*[[Mail tools]]
SMTP wird heute für fast alle E-Mails verwendet. Es definiert die Kommunikation von Start- und Zielrechner per TCP/IP zur Übermittlung der Nachrichten. Das UUCP-Protokoll dient eigentlich dazu, Dateien von einem Unixrechner zu einem anderen zu kopieren. Hierbei werden im ersten Schritt Dateien zum Kopieren vorgemerkt (gespoolt). Dann wird im zweiten Schritt eine Verbind­ung zum anderen Rechner aufgebaut, wobei es mehrere Arten der Kontaktaufnahme gibt, z.B. direkte Modemverbindung oder TCP/IP. Danach werden über diese Verbindung die Dateien zum Zielrechner kopiert.
+
*[[imap befehle]]
Da die mit UUCP zu kopierenden Dateien vor der Übertragung komprimiert werden können, eignet es sich gut für Systeme mit langsamen Netzverbindungen oder Wählleitungen.
+
*[[postfix]]
Da UUCP keine TCP/IP-Verbindung erfordert, eignet es sich ideal zur E-Mail-Anbindungvon Hochsicherheitssystemen
+
*[[postfix-commands]]
Die Konfiguration von UUCP wird nur noch in Einzelfällen benötigt, so dass sich dieses Skript auf SMTP beschränkt.
+
*[[dovecot]]
 
+
*[[roundcube]]
=Arbeitsweise des Protokolls SMTP=
+
*[[spamassassin]]
Die Aufgabe von SMTP ist der zuverlässige und effiziente Transport von Mail (Senden und Emp­fangen). SMTP ist unabhängig von dem unterliegenden Netzprotokoll, normalerweise wird jedoch TCP verwendet und die Kommunikation geht über den TCP-Port 25.
+
*[[Greylisting]]
Der Sender erhält vom Benutzer den Auftrag, eine Mail zuzustellen. Dieser baut nun eine bidirek­tionale Verbindung zum Empfänger auf, der entweder das direkte Ziel der Nachricht oder ein Nachrichtenübermittler auf der Strecke zum Ziel ist. Im letzteren Falle sorgt dieser für die weitere Verbindung zum Zielrechner. Der Sender schickt Kommandos, die vom Empfänger akzeptiert oder abgelehnt werden können. Dieser ist nun für die Zustellung beim Benutzer verantwortlich.
+
*[[qmail.schema]]
Anders als bei UUCP werden die Mails sofort zugestellt, sofern der Empfänger erreichbar ist
+
*[[postfix ldap]]
 
+
*[[postfix Backup MX]]
==SMTP-Versand per telnet==
+
*[[S/MIME]]
Diese Kommunikation erfolgt in einzelnen Schritten, die alle nacheinander auszuführen sind:
+
*[[postfix tls erzwingen]]
Angabe des Absenders
+
*[[Mail Proxy Protokoll]]
Syntax
 
MAIL FROM: <Absender>
 
Zuerst ist anzugeben, wer die E-Mail verschickt.
 
MAIL FROM: thomas@xinux.de
 
 
 
Angabe des Empfängers
 
Syntax
 
RCPT TO: <Empfänger>
 
Danach folgt der Empfänger der Nachricht; um sie an mehrere Empfänger zu verschicken, verwendet man dieses Kommando einfach mehrmals.
 
 
 
RCPT TO: martin@tuxmen.de
 
Übertragung des E-Mailtextes
 
Syntax
 
DATA <Text> .
 
Nach dem DATA-Kommando werden alle folgenden Zeilen als Nachrichtentext interpretiert, bis ein einzelner Punkt am Zeilenanfang eingegeben wird.Als Subject geben
 
wir “testmail von thomas” an.
 
 
 
DATA
 
Subject: testmail von thomas
 
 
 
Hallo Martin!
 
Dies ist eine Testmail per SMTP.
 
.
 
Beenden der Übertragung
 
Syntax
 
QUIT
 
Man kann über eine Verbindung mehrere E-Mails verschicken; am Ende muss man QUIT eingeben, um die Verbindung ordentlich zu trennen.
 
QUIT
 
Und hier nochmal komplett:
 
 
 
 
 
pate:/etc/postfix# telnet neelix.talaxia.de 25
 
Trying 85.10.194.199...
 
Connected to neelix.talaxia.de.
 
Escape character is '^]'.
 
220 neelix.talaxia.de ESMTP Postfix (Debian/GNU)
 
MAIL FROM: thomas@xinux.de
 
250 Ok
 
RCPT TO: martin@tuxmen.de
 
250 Ok
 
DATA
 
354 End data with <CR><LF>.<CR><LF>
 
Subject: testmail von thomas
 
 
 
Hallo Martin!
 
Dies ist eine Testmail per SMTP.
 
 
 
gruss
 
 
 
Thomas
 
.
 
250 Ok: queued as D44DF99009B
 
QUIT
 
221 Bye
 
 
 
 
 
==Voraussetzungen für den Versand über SMTP==
 
Damit ein Rechner E-Mail empfangen kann, muss er ständig eingeschaltet sein. Da dies für die meisten Client-Rechner nicht der Fall ist, gibt es so genannte Mailserver, die ständig aktiv sind und E-Mails für eine ganze Reihe von Benutzern empfangen und zwischenspeichern können
 
Die ständige Verfügbarkeit oder der passende MX-Eintrag des zuständigen DNS-Servers sind allgemein Voraussetzung für den Empfang von E-Mail
 
 
 
==Weitere Möglichkeiten für den Versand von E-Mail==
 
Wir wissen nun, wie E-Mail zum zuständigen SMTP-Server des Empfängers übermittelt wird. Es stellt jedoch häufig für den Sender ein Problem dar, den SMTP-Server direkt zu erreichen. So kann es sein, dass unter Umständen der SMTP-Server vorübergehend nicht erreichbar ist. Das kann vorkommen, wenn der Sender nur über eine Wählverbindung mit dem Internet verbunden ist oder wenn der SMTP-Server ausgefallen ist. Der Client müsste also beim Versenden jeder Mail eine Verbindung ins Internet aufbauen oder ggf. zu einem späteren Zeitpunkt probieren, die Mail zu versenden. Die Verbindung ins Internet ist in vielen Fällen auch durch eine Firewall gesperrt. Um diesen Problemen aus dem Weg zu gehen, haben SMTP-Server noch eine weitere Funktion:
 
Der Sender benutzt häufig seinen eigenen SMTP-Server, um ausgehende Mail zu versenden. Dieser kann sich dann darum kümmern, dass die Mail zum SMTP-Server des Empfängers transportiert wird. Somit kann die Mail - ohne Zutun des Senders - auch erst ausgeliefert werden, wenn der SMTP-Server des Empfängers erreichbar ist. Die Einrichtung des Clients ist recht einfach, da nur der eigene Mail-Server einzutragen ist. Früher war es üblich, dass E-Mails über mehrere SMTP-Server transportiert wurden, bis sie den Empfänger erreichte (Mail Relaying), heute stellt der sendende Mailserver dem Mailserver des Empfängers die Mail in der Regel direkt zu.
 
=Sendmail=
 
Sendmail war lange Zeit  Standardprogramm zum E-Mail-Transport im Internet . Seine Popularität verdankt es nicht zuletzt seiner Flexibilität, die eine Konfiguration allerdings erschwert. Leider ist der monolithische Sendmail alles andere als leicht zu pflegen. In solch ein "Multifunktions-Tool" schleichen sich zwangsläufig Fehler ein - eine neue Sicherheitslücke in Sendmail gehörte in der Vergangenheit zu den Treppenwitzen der Internet-Geschichte schlechthin.
 
 
 
=Alternativen=
 
 
 
Die beiden am häufigsten eingesetzten (freien) Alternativen zu Sendmail sind Dan Bernsteins Qmail und Postfix von Wietse Venema. Beide sind wie Sendmail im Quelltext frei verfügbar - Qmail unter der GPL, Postfix unter einer von der Mozilla Public License abgeleiteten Lizenz von IBM - und beide sind einfacher zu handhaben als das altehrwürdige Sendmail.
 
 
 
 
 
=Postfix=
 
 
 
Wieste's Ziel bei der Entwicklung von Postfix war, ein schnelles, einfach zu administrierendes und sicheres Programm(paket) zu entwickeln, das so weit wie möglich zu Sendmail kompatibel sein soll. Das Interessanteste an Postfix ist sein innerer Aufbau (siehe Grafik): es besteht aus mehreren kleinen Programmen, die über UNIX-Domain-Sockets kommunizieren. Auf diese Weise ist es viel einfacher, Probleme, Fehler oder Sicherheitsmängel in den Griff zu bekommen. Beispielsweise kommt Postfix ganz ohne setuid-M©chanismen aus. Deshalb ist es für einen potenziellen Angreifer unmöglich, Superuser-Rechte zu bekommen - selbst wenn er ein Sicherheitsloch von Postfix gefunden hätte. Sendmail hingegen muß unter UID 0 (root) laufen, zumindest in einer Standardinstallation und ohne größere Klimmzüge.
 
Ebenfalls aus Sicherheitsgründen arbeitet Postfix mit vier verschiedenen Queues: "maildrop", "incoming", "active" und "deferred". Lokal gesendete Mails landen in "maildrop" und werden von dort in die "incoming"-Queue kopiert, nachdem sie regelbasiert auf Größe, Inhalt und anderes überprüft wurden. In der "active" Queue landen die Mails, die der Queue-Manager gerade bearbeitet und ausliefert (lokal oder remote). Nachrichten, die Postfix nicht ausliefern kann (Dienst des Zielmailservers reagiert nicht, keine Route, keine Netzverbindung, ...), landen in der "deferred" Queue. Da Postfix immer nur eine Mail gleichzeitig bearbeitet und die "active" Queue klein hält, ist es unempfindlich gegen Ressourcenknappheit. Das Bearbeiten/Ausliefern von Mails kann also in keinem Fall, beispielsweise wegen eines vollen Dateisystems, blockiert werden.
 
 
 
 
 
 
 
Die Grafik zeigt den modularen Aufbau von Postfix. Hierbei bedeuten:
 
gelbe Ellipsen Programme
 
gelbe Kästen Mail-Queues oder -Dateien
 
blaue Kästen (Nachschlage-) Tabellen
 
Programme in der umrandeten Box laufen unter der Kontrolle des Postfix master Daemons.
 
Dateien in diesem Kasten gehören dem Postfix-Mail-System.
 
[[Datei:queue.jpg]]
 
 
 
 
 
==Installation von Postfix==
 
 
 
Vobereitung:  Im Verzeichniss /etc/skel sollte folgende Verzeichnisstruktur  angelegt werden:
 
 
 
pate:/etc/skel# tree .
 
.
 
`-- Maildir
 
    |-- cur
 
    |-- new
 
    `-- tmp
 
 
 
4 directories, 0 files
 
 
 
oder Maildir Vorlage anlegen
 
mkdir -p /etc/skel/Maildir/new
 
mkdir -p /etc/skel/Maildir/cur
 
mkdir -p /etc/skel/Maildir/tmp
 
 
 
Wir brauchen das für den courier  imap Server (kommt weiter unten) 
 
 
 
 
 
Installiert wird Postfix mit dem Befehl
 
apt-get install postfix
 
Da auf einem Debiansyste meistens exim vorinstalliert ist und es sich bei Mailservern um Highländerpakete handelt wird vorgeschlagen exim zu entfernen.Dieses kann man bejahren.Danach gehts los mit der Debian-Konfiguration:
 
[[Datei:mail1.jpg]]
 
[[Datei:mail2.jpg]]
 
[[Datei:mail3.jpg]]
 
[[Datei:mail4.jpg]]
 
 
 
==Dateien und Verzeichnisse==
 
 
 
 
 
 
 
postfix startet oder stoppt das Postfix-System
 
 
 
postalias      erzeugt die aliases-table für Postfix aus /etc/aliases, das  Pendant zu postmap
 
 
 
postcat zeigt den Inhalt der Queues an
 
 
 
postconf listet alle Variablen aus der Postfix-Konfiguration auf,kann aber auch gleichzeitig Einstellungen in der main. cf verändern! So kann man bequem aus Skripten heraus die Postfix-Konfiguration anpassen.
 
 
 
postdrop nimmt e-Mails auf der Kommandozeile an und speist sie in die Queues ein
 
 
 
postkick        sendet an einzelne Postfix-Module Steuerbefehle
 
 
 
postlock        lockt für Postfix Mailboxen, kann in Skripten eingesetzt werden
 
 
 
postlog erzeugt eine Logmeldung für syslogd
 
 
 
postmap wandelt alle Tables von Postfix vom Text-Format in das hash-Format (. db). Neben
 
mailq das wohl wichtigste Tool
 
 
 
postqueue    listet die Mailqueue oder startet die Auslieferung daraus (flush); wird von mailq aufgerufen.
 
 
 
postsuper      verwaltet die Postfix-Queue
 
 
 
mailq listet den Inhalt der Mailqueues auf und zeigt den aktuellen Versandstatus oder Versandprobleme; ersetzt mailq von Sendmail.
 
 
 
newaliases ersetzt das Sendmail-Programm newaliases und ist im Prinzip postalias nur unter einem anderen Namen.
 
 
 
sendmail      Sendmail-kompatibles Interface für lokal erzeugte Mails. Es verhält sich exakt so, wie sich auch das Original verhalten würde, übergibt die e-Mails dann aber sofort an postdrop.
 
 
 
==Dateien und Verzeichnisse==
 
 
 
 
 
Da sich die Konfiguration von Postfix über mehrere Dateien erstreckt, ist es von Bedeutung, dass man die wichtigsten davon kennt, bevor man mit der Konfiguration beginnt
 
 
 
==Konfigurationdateien==
 
 
 
Postfixmaster Programm
 
/usr/sbin/postfix
 
 
 
Startdatei von postfix
 
/etc/init.d/postfix  start|stop|restart
 
 
 
Module und Unterprogramme
 
/usr/lib/postfix
 
 
 
Dokumentation
 
/usr/share/doc/postfix
 
 
 
Mailqueue Ordner
 
/var/spool/postfix
 
 
 
==Konfigurationverzeichnis /etc/postfix==
 
===master.cf  - Prozess Masterkonfigurationsdatei===
 
Aufbau der Datei master.cf
 
 
 
Das Postfix Paket selbst bringt ausführlich kommentierte Konfigurationsdateien mit. Der größte Teil der master.cf besteht aus Erläuterungen. Die Konfiguration erfolgt zeilenweise in einer Tabellenähnlichen Datenstruktur. Jede Zeile definiert hier eine Komponente des Postfixsystems, die vom Masterprozess gestartet werden kann. Die einzelnen Spalten steuern wie und wann der zentrale Daemon die jeweiligen Prozesse startet oder stoppt.
 
 
 
Eine Konfigurationszeile der Konfigurationsdatei beginnt immer in der ersten Spalte. Nach einem Zeilenumbruch wird sie nach einem Whitespace fortgesetzt. Es werden also keine \ benötigt um Zeilenumbrüche zu maskieren.
 
Bedeutung der einzelnen "Spalten"
 
Jede Konfigurationszeile ist in maximal 8 Spalten unterteilt. Die Spalten werden durch Whitespaces voneinander getrennt. In jeder Zeile haben die einzelnen Spalten dieselbe Bedeutung für die jeweilige Teilkomponente. Einige der Spalten sind mit einem Defaultwert vorbelegt. Wenn in dieser Spalte ein "-" eingetragen wird kommt der Defaultwert zum tragen.
 
*service
 
Hier wird der Service-Typ eingetragen, der zur folgenden Typ-Spalte passen muß. Jeder Bezeichner in dieser Spalte muss eindeutig sein.
 
Services, die in der zweiten Spalte als inet definiert werden, müssen auf eine Portnummer aufgelöst werden können. Das heisst, das dem hier eingetragenen Service in der Datei /etc/services eine Portnummer zugeordnet sein muss. Alternativ zum Eintrag in /etc/services kann auch direkt eine Portnummer angegeben werden. Der Portnummer oder dem Dienstbezeichner kann noch ein Hostname oder eine IP-Adresse vorangestellt werden. Der Master Daemon bindet sich dann nur an das konfigurierte Interface. Ein Eintrag hier kann also im Format [host|ip:]<service|port> (z.B: localhost:smtp) eingetragen werden
 
Ein hier angegebener Bezeichner für einen Service kann in einem transport adressiert werden. Dieses ist z.B. die empfohlene Vorgehensweise um die E-Mail an Cyrus Mailboxen auszuliefern.
 
*type
 
Dieses Feld bietet die Möglichkeit den Typ des in Spalte 1 definierten Services festzulegen. Mögliche Typen sind inet für Internet Sockets, unix für Unix-Domain Sockets und fifo für Named Pipes.
 
Falls eine E-Mail an ein Programm übergeben werden soll, wird in der master.cf ein Service des Typs unix eingestellt. In der "command" Spalte wird das Kommando pipe eingestellt, das eine E-Mail an ein externes Programm übergibt.
 
*private (Default ja)
 
Ein als privat gekennzeichneter Dienst darf nur vom Postfix-Mailsystem selbst angesprochen werden. Dieses ist auch die Defaulteinstellung. Dienste die als Internet Sockets definiert sind müssen als öffentlich ("n") deklariert werden.
 
*unpriv (Default ja)
 
Der Parameter unpriv legt fest, ob der Dienst mit mit der Userid eines unprivilegierten Accounts gestartet werden soll oder als root. Die Benutzer ID des unprivilegierten Accounts wird in main.cf mit dem Parameter mail_owner bestimmt. Wenn der Dienst mit den Rechten von root gestartet werden soll, wird hier ein "n" eingetragen.
 
*chroot
 
Mit chroot wird bestimmt, ob der Prozess in einer chroot Umgebung laufen soll. Die Basis dieser Umgebung ist das Verzeichnis in dem die Mail Queues von Postfix installiert sind. Dieses Verzeichnis wird mit Hilfe des Parameters queue_directory in der main.cf bestimmt. Alle Prozesse mit Ausnahme der als PIPE definierten und den Daemons die die virtuelle oder lokale Auslieferung von E-Mail übernehmen, können chroot gestartet werden.
 
*wakeup
 
Hier wird eingestellt, ob der in der "command" Spalte eingestellte Prozess in regelmässigen Abständen Aktionen durchführen soll, wie z.B. das Leeren die Queue.
 
*maxproc
 
Die maximale Anzahl Prozesse, die von diesem Service gestartet werden können.
 
*command
 
Das zu startende Kommando. Der Pfad ist relativ zum Postfix Kommandoverzeichnis (kann mit dem Parameter program_directory in main.cf eingestellt werden).
 
*args
 
Die Argumente, die dem Kommando der Spalte "command" übergeben werden. Für die von Postfix selbst bereitgestellten Kommandos kann hier mit Hilfe eines oder mehreren -v Schaltern ein umfangreicheres Logging eingestellt werden.
 
Das Pipe Kommando bietet die umfangreichste Liste von möglichen Argumenten. Die Bedeutung der einzelnen Parameter ist in der Manpage pipe(8) dokumentiert.
 
<pre>
 
#======================================================================
 
# service type  private unpriv  chroot  wakeup  maxproc command + args
 
#              (yes)  (yes)  (yes)  (never) (100)
 
#======================================================================
 
smtp inet  n      -      -      -      -      smtpd
 
pickup fifo  n      -      -      60      1      pickup
 
cleanup unix  n      -      -      -      0      cleanup
 
qmgr fifo  n      -      -      300    1      qmgr
 
rewrite unix  -      -      -      -      -      trivial-rewrite
 
bounce unix  -      -      -      -      0      bounce
 
defer unix  -      -      -      -      0      bounce
 
trace unix  -      -      -      -      0      bounce
 
verify unix  -      -      -      -      1      verify
 
flush unix  n      -      -      1000?  0      flush
 
proxymap unix  -      -      n      -      -      proxymap
 
smtp unix  -      -      -      -      -      smtp
 
relay unix  -      -      -      -      -      smtp
 
showq unix  n      -      -      -      -      showq
 
error unix  -      -      -      -      -      error
 
local unix  -      n      n      -      -      local
 
virtual unix  -      n      n      -      -      virtual
 
lmtp unix  -      -      n      -      -      lmtp
 
anvil unix  -      -      n      -      1      anvil
 
maildrop unix  -      n      n      -      -      pipe
 
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
 
uucp      unix  -      n      n      -      -      pipe
 
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
 
ifmail    unix  -      n      n      -      -      pipe
 
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
 
bsmtp    unix  -      n      n      -      -      pipe
 
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
 
scalemail-backend unix  -      n      n      -      2      pipe
 
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
 
</pre>
 
 
 
===main.cf  - Hauptkonfigurationsdatei===
 
 
 
wird angezeigt wenn man ein telnet hostname 25 macht
 
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
 
 
 
aktiviert die zusammenarbeit mit dem biff daemon
 
dieser zeigt auf de konsole an das mails eingegangen sind
 
biff = no
 
 
 
wenn ein name kein fqdn ist ,wird der domainname angehaengt
 
append_dot_mydomain = no
 
 
 
der fqdn der mailservers
 
myhostname = pate.provider.int
 
 
 
die domain des mailservers
 
mydomain  = provider.int
 
 
 
hostname der bei der lokalen erzeigung von emails benutzt wird
 
myorigin = /etc/mailname
 
 
 
tabelle der mailaliasen
 
alias_maps = hash:/etc/aliases
 
 
 
canonical tabelle der sender adressen
 
sender_canonical_maps = hash:/etc/postfix/canonical
 
 
 
transport tabelle => mailertable bei sendmail
 
transport_maps = hash:/etc/postfix/transport
 
 
 
virtuall tabelle
 
virtual_maps = hash:/etc/postfix/virtual
 
 
 
relocated_maps = hash:/etc/postfix/relocated
 
 
 
header_check = rexexp:/etc/postifx/header_check
 
 
 
domain fuer die postfix "final destination ist" ist. sie werden local zugestellt
 
mydestination = $myhostname, $mydomain, /etc/postfix/mydestination
 
 
 
ip nummern, die bei permit_mynetworks, permit_auth_destination und
 
reject_unauth_destination relayen duerfen
 
  mynetworks = 127.0.0.0/8, 192.168.86.0/24, 192.168.254.22
 
 
 
 
 
host ueber den alle ausgehenden mails geschickt werden, der mx record wird ignoriert
 
relayhost = neelix.talaxia.de
 
 
 
restrictions nach dem "RCPT TO:" abgesetzt wurde
 
smtpd_recipient_restrictions    = check_recipient_access hash:/etc/postfix/access
 
                              permit_mx_backup
 
                              permit_mynetwork
 
                              check_relay_domains
 
 
 
das programm das die mails an die localen postfaechern zustellt
 
mailbox_command = procmail -a "$EXTENSION"
 
 
 
maximal groesse der userpostfaecher danach wird gebounced
 
mailbox_size_limit = 0
 
 
 
trennzeichen um in der empfaenger adresse die maibox extention abzutrennen
 
recipient_delimiter = +
 
 
 
ip nummern auf denen postfix einen port oeffnet
 
inet_interface = all
 
nicht fqdn-namen in der mailadresse wird die §mydomain angehängt
 
append_dot_mydomain = yes
 
 
 
===Die Tabellen===
 
Die Tabellen bei Postfix werden als normale ASCII-Textdateien angelegt. Sie müssen danach noch in ein Datenbankformat umgewandelt werden. Dazu stehen zwei Tools zur verfügung.
 
*postalias für die aliases-tabelle
 
*postmap für den rest
 
 
 
 
 
====alias_maps = hash:/etc/aliases====
 
Die aliases-table definiert Mailaliase. Damit lassen sich lokale Adressen umschreiben und Mails in andere Postfächer umleiten. Sie liegt historischen Gründen im gegensatz zu den anderen Tabellen nicht unter /etc/postfix.
 
 
 
<pre>
 
#/etc/aliases
 
mailer-daemon: postmaster
 
postmaster: root
 
nobody: root
 
hostmaster: root
 
usenet: root
 
news: root
 
webmaster: root
 
www: root
 
ftp: root
 
abuse: root
 
noc: root
 
security: root
 
technik: thomas,martin,tina       
 
</pre>
 
Danach wird in das Datenbankformat umgewandelt:  postalias /etc/aliases
 
====virtual_maps = hash:/etc/postfix/virtual====
 
Damit lassen sich alle Adressen umschreiben.
 
Folgende Kriterien gelten hierbei:
 
<pre>
 
user@domain.de genau diese Mailadresse
 
@domain.de alle Adressen dieser Domain
 
user dieser User bei beliebigen Domains
 
domain.de definiert diese Domain als virtuelle Domain
 
 
 
 
 
#allgemeines freischalten der virtuellen domains. das blabla dient nur als platzhalter.
 
 
 
apfel.int                      blabla
 
birne.int                      blabla
 
delicius.int                    blabla
 
 
 
#vertrieb@apfel.int wird hier dem lokalen konto apfel-vertieb zu geordnet.
 
vertrieb@apfel.int     apfel-vertrieb
 
#webmaster@apfel.int wird hier dem lokalen apfel-webmaster zu geordnet.
 
webmaster@apfel.int            apfel-webmaster
 
 
 
#alles an die domain delicius.int wird hier dem lokalen apfel-sammel zu geordnet.
 
@delicius.int                  apfel-sammel
 
 
 
vertrieb@birne.int              birne-vertrieb
 
webmaster@birne.int            birne-webmaster
 
 
 
vertrieb@provider.int          provider-vertrieb
 
webmaster@provider.int      provider-webmaster
 
</pre>
 
 
 
Danach wird in das Datenbankformat umgewandelt:  postmap /etc/postfix/virtual
 
 
 
====sender_canonical_maps = hash:/etc/postfix/canonical====
 
 
 
Auch die canonical-Tabellen können Mailadressen umschreiben. Sie sind jedoch in der lage auch Absendeadressen umzuschreiben so ist es möglich. unschöner Absendeadressen durch schönere zuersetzen.
 
Es gibt drei Arten von canonical-Tabellen
 
 
 
*canonical_maps  -> Umwandlung bei Absende  und Empfängeradressen
 
*sender_canonical_maps-> Umwandlung bei Absendeadressen
 
*recipient_canonical_maps -> Umwandlung bei Empfängeradressen
 
#wandelt eine localen absender adresse in eine offizielle adresse um
 
root            technik@provider.int
 
#wandelt fuer alle konten absender in dies domain um
 
@pate.provider.int      @provider.int
 
 
 
Danach wird in das Datenbankformat umgewandelt  postmap /etc/postfix/virtual
 
 
 
====transport_maps = hash:/etc/postfix/transport====
 
Postfix kennt verschiedene Transport-Methodem e-Mails zuzustellen.  Über den Parameter default_transport kann man Postfix eine Standardmethode zuweisen.
 
Beispielsweise
 
*SMTP  -> Sendmail Transport Protokoll
 
*UUCP -> Unix 2 Unix Copy
 
*LMTP -> lokale Mail auslieferung
 
Man kann in der transport-Tabelle nun diesen Vorgabe ändern. Es wird dann unabhängig vom
 
MX-Record eine Mail über einen bestimmten Mailserver geschickt.
 
 
 
pate:/etc/postfix# dig  -t mx sympatel.de | grep -A 3 ";; ANSWER"
 
;; ANSWER SECTION:
 
sympatel.de.            86255  IN      MX      10 mail.sympatel.de.
 
sympatel.de.            86255  IN      MX      20 mforward.dtag.de.
 
 
 
# Mails für sympatel.de werden trotz der anderslautenten MX Records über neelix.talaxia.de
 
geschickt.
 
sympatel.de            esmtp:neelix.talaxia.de
 
 
 
Danach wird in das Datenbankformat umgewandelt  postmap /etc/postfix/transport
 
 
 
 
 
 
 
 
 
====relocated_maps = hash:/etc/postfix/relocated====
 
relocated  bounct unzustellbare Mails unter Angabe der neuen Mailadresse des verzogenen Accounts
 
 
 
#neue Adresse von bauer ist jetzt martin.bold@xinux.de
 
bauer@apfel.int        martin.bold@xinux.de
 
 
 
Danach wird in das Datenbankformat umgewandelt  postmap /etc/postfix/relocated
 
 
 
 
 
 
 
 
 
==Schutz durch Restrictions==
 
Der entscheidende Stelle, um Spam abzuwehren, ist der Einliefungszeitpunkt auf dem Mailserver.
 
Es soll also daum gehen, die Annahme von vorneherein abblocken zu können. Ob eine Mail angenommen werden darf, entscheidendet sich aus einem zusammenspiel von
 
 
 
 
 
*IP-Adresse des einliefernden Mailservers
 
 
 
*Empfänger der Mail
 
 
 
*Mailadresse des Absenders (unsicher)
 
 
 
*Password Authentifizierung (sicher)
 
 
 
Formale Kritierien (fehlerhafte SMTP Befehle)
 
 
 
 
 
===Wann wird geprüft?===
 
 
 
Die Prüfung kann jetzt zu verschiedenen Zeitpunkten durch geführt werden wobei hier gilt
 
je später der Zeitpunkt desto mehr informationen können ausgewertert werden. Es gibt hier
 
4 Möglichkeiten:
 
<pre>
 
Zeitpunkt
 
smtp_recipient_restrictions -> nach  RCPT TO:ziel@provider.int
 
check_sender_access typ:mapname
 
reject_unknown_recipient
 
permit_mx_backup
 
check_relay_domains
 
permit_auth_destination
 
 
 
smtp_sender_restrictions -> nach  MAIL FROM:quelle@provider.int
 
check_sender_access typ:mapname
 
reject_unknown_senderdomain
 
reject_non_fqdn_sender
 
 
 
smtp_helo_restrictions -> nach  HELO domain.de FROM:quelle@provider.int
 
check_helo_access
 
reject_unknown_hostname
 
reject_non_fqdn_hostname
 
reject_invalid_hostname
 
permit_naked_ip_adresse
 
 
 
smtp_client_restrictions -> nach dem CONNECT
 
reject_unauth_pipelining
 
permit
 
reject
 
warn_in_reject
 
check_client_access typ:mapname
 
reject_unknown_client
 
reject_maps_rbl
 
permit_mynetworks
 
</pre>
 
 
 
 
 
====check_sender_access hash:/etc/postfix/access====
 
Die Tabelle access erlaubt es, einzelne Adressen ,Nutzer oder Hosts für bestimmte Aktionen
 
freizugeben oder zu blocken. Die access-Tabelle trifft dabei immer Ja/Nein-Aussagen :
 
OK oder REJECT
 
<pre>
 
#restrictions nach dem "RCPT TO:" abgesetzt wurde
 
smtpd_recipient_restrictions      = check_recipient_access hash:/etc/postfix/access,
 
permit_mx_backup,
 
permit_mynetwork,
 
check_relay_domains
 
 
 
#/etc/postfix/access
 
provider.int OK
 
apfel.int OK
 
birne.int OK
 
delicius.int OK
 
tuxmen.int OK
 
</pre>
 
Danach wird in das Datenbankformat umgewandelt  postmap /etc/postfix/access
 
 
 
 
 
 
 
===Protokolle zum Abruf von E-Mail===
 
Nachdem die Mail im Postfach des Benutzers angekommen ist, muss sie irgendwie zum Mail-Client des Benutzers gelangen. In den seltensten Fällen hat der Mail-Empfänger einen direkten Zugang (login-Shell) zum Unix-Rechner. Somit muss der Benutzer sich die E-Mail vom Unix-Rechner ”abholen”. Es haben sich hier zwei Protokolle herauskristallisiert:
 
Post Office Protokoll - Version 3 (POP3)
 
Internet Message Access Protokoll - Version 4 (IMAP4)
 
Von den beiden Protokollen ist IMAP4 das deutlich komplexere und flexiblere. Trotzdem ist POP3 noch sehr weit verbreitet, da es weniger Server-Ressourcen verbraucht.
 
==POP3==
 
Das POP3-Protokoll bietet nicht viele Möglichkeiten; man kann sich am Server authentifizieren, erfährt, wie viele Nachrichten vorhanden und wie viele ungelesen sind und kann diese Nachrichten dann herunterladen und vom Server löschen.
 
Dies bedeutet, dass bei Verwendung eines POP3-Servers immer alle Nachrichten vor dem Lesen heruntergeladen werden müssen und es nicht möglich ist, die Nachrichten von zwei oder mehreren Rechnern aus abzurufen, da sie nur auf einem Rechner vorhanden sein werden
 
Es gibt bei vielen Mailprogrammen auch die Option “Nachrichten auf dem Server belassen”. Hierbei werden die Nachrichten einfach nur nicht gelöscht, so dass man sie beim nächsten Mal wieder herunterladen muss und somit nichts gewonnen hat
 
Beschreibung des Protokolls POP3
 
Ähnlich wie bei anderen Protokollen ist es auch hier möglich, die Verbindung zu einem POP3-Server ”von Hand” aufzubauen. Wir verwenden das Programm telnet, um den Abruf von E-Mail zu simulieren. Die Befehle von POP3 sind sehr einfach:
 
Authentifizierung
 
Syntax
 
<pre>
 
USER <benutzername> PASS <passwort>
 
Hier entspricht das Protokoll dem FTP-Protokoll, aber warum sollte man sich etwas Neues ausdenken müssen?
 
 
 
USER martin
 
PASS suxer
 
Übersicht
 
Syntax
 
LIST
 
Dieses Kommando gibt einem eine Liste von Nachrichtennummern und Längen der Nachrichten aus.
 
Nachricht lesen
 
Syntax
 
RETR <Nachrichtennummern>
 
Die Nachrichtennummer muss eine der Nummern aus der Ausgabe des LIST-Kommandos sein.
 
RETR 10
 
Nachricht löschen
 
Syntax
 
DELE <Nachrichtennummern>
 
Die entsprechende Nachricht wird unwiderruflich gelöscht.
 
DELE 10
 
Alles in allem ziemlich unspektakulär, deshalb hier das ganze nochmal zusammen:
 
pate:/etc/skel# telnet pate.provider.int 110
 
Trying 192.168.86.10...
 
Connected to pate.provider.int.
 
Escape character is '^]'.
 
+OK Qpopper (version 4.0.5) at localhost.localdomain starting.  <8228.1131614979@localhost.localdomain>
 
user martin
 
+OK Password required for martin.
 
pass suxer
 
+OK martin has 1 visible message (0 hidden) in 444 octets.
 
list
 
+OK 1 visible messages (444 octets)
 
1 444
 
.
 
retr 1
 
+OK 444 octets
 
Return-Path: <technik@provider.int>
 
X-Original-To: martin
 
Delivered-To: martin@pate.provider.int
 
Received: by pate.provider.int (Postfix, from userid 0)
 
        id 9F0A56A210; Thu, 10 Nov 2005 10:29:36 +0100 (CET)
 
To: martin@pate.provider.int
 
Message-Id: <20051110092936.9F0A56A210@pate.provider.int>
 
Date: Thu, 10 Nov 2005 10:29:36 +0100 (CET)
 
From: technik@provider.int (root)
 
X-UIDL: =/e!!#X)#!dbh"!@lp!!
 
 
 
Do Nov 10 10:29:36 CET 2005
 
.
 
dele 1
 
+OK Message 1 has been deleted.
 
list
 
+OK 0 visible messages (0 octets)
 
.
 
quit
 
+OK Pop server at localhost.localdomain signing off.
 
Connection closed by foreign host.
 
Die Installation einer POP3 Server ist unter Debian wie immer sehr einfach:
 
 
 
</pre>
 
 
 
apt-get install qpopper
 
 
 
 
 
Und zur Kontrolle:
 
 
 
pate:/etc/skel# netstat -ltp | grep pop3
 
tcp        0      0 *:pop3                  *:*                    LISTEN    759/inetd
 
 
 
==IMAP4==
 
Bei IMAP4 handelt es sich um ein deutlich komplexeres Protokoll, das alle Funktionen von POP3 unterstützt und über weitere Funktionen verfügt. So kann man die Kopfzeilen der Nachrichten, also Datum, Absender, Empfänger, Betreff usw. getrennt herunterladen, um eine Übersicht der Nachrichten zu erhalten. Nachrichten können direkt auf dem Server verschoben und gelöscht werden; die Authentifizierung kann verschlüsselt erfolgen, uvm.
 
Aus diesem Grund kann IMAP4 sehr gut in Intranets eingesetzt werden, in denen von mehreren Rechnern aus (z.B. Laptop und Arbeitsplatz) die gleiche E-Mail gelesen werden soll. Da die E-Mail zentral auf dem Server verbleibt, kann sie in das Backup-Konzept eingebunden werden, so dass der Ausfall eines Arbeitsplatzes keinen Verluste der E-Mail bedeutet. Hierzu ist allerdings auf eine entsprechende Leistungsfähigkeit des Servers zu achten.
 
 
 
===Courier-IMAP===
 
 
 
Courier-IMAP ist eine sehr große und mächtige Lösung, um Mails auf einem System zu verwalten. Die Installation und Konfiguration von Courier-IMAP ist aber gar nicht so schwer und aufwendig, wie es auf den ersten Blick erscheinen mag. Ein Grundsystem für einen oder mehrere User ist schnell zusammengestellt.
 
Da Courier-IMAP auf das Maildir-Format aufsetzt, muss jedoch gewährleistet sein, dass diese Mails bereits vorm Zugriff mit Courier in diesem Format vorhanden sind. Anders als im mbox-Format liegen die einzelnen Mails dabei jeweils in Unterverzeichnissen. Pro Folder (IMAP-Ordner) gibt es drei Unterverzeichnisse, nämlich new, cur und tmp. Das haben wir oben schon erledigt :)
 
 
 
===Installation von courier-imap===
 
<pre>
 
apt-get install courier-imap
 
Kontrolle
 
pate:~# netstat -lntp | grep 143
 
tcp        0      0 0.0.0.0:143            0.0.0.0:*              LISTEN    3665/couriertcpd
 
</pre>
 
Es gibt dann Zwei Konfigurationsdateien die in der Regel nicht angepasst werden müssen
 
 
 
pate:/etc/courier# cat authdaemonrc
 
 
 
#authmodulelist und authmodulelistorig legen die Art der Userauthentifizierung fest. daemons legt #die Anzahl der gleichzeitig laufenden Authentifizierungs-Daemons fest. Wenn nicht mehr als #ungefähr 20 Mailboxen gleichzeitig angesteuert werden sollen, reicht einer. Ansonsten ist die #Anzahl dementsprechend zu erhöhen.
 
 
 
authmodulelist="authpam"
 
authmodulelistorig="authcustom authcram authuserdb authldap authpgsql authmysql authpam"
 
daemons=5
 
version=""
 
 
 
authdaemonvar=/var/run/courier/authdaemon
 
<pre>
 
pate:/etc/courier# cat imapd
 
# Adresse wo der imap server lauschen soll
 
ADDRESS=0
 
# der Port der imap verwenden soll
 
PORT=143
 
#maxiamleAanzahl der imap daemons
 
MAXDAEMONS=40
 
 
 
#Maixmale Verbindungen per IP
 
MAXPERIP=20
 
 
 
#Datei der die Prozess id enthält Prozess ID
 
PIDFILE=/var/run/courier/imapd.pid
 
# Optionen der couriertcpd sollten nicht geändert werden
 
TCPDOPTS="-nodnslookup -noidentlookup"
 
#Wenn  AUTHMODULES="authdaemon", gesetzt ist “DO NOT CHANGE IT”
 
#Ändere den Parameter in der /etc/courier/autdaemon
 
AUTHMODULES="authdaemon"
 
#fuer das webminmodul
 
AUTHMODULES_ORIG="authdaemon"
 
 
 
#Debuglevel
 
DEBUG_LOGIN=0
 
# antwort auf das CAPABILITY-Kommando
 
IMAP_CAPABILITY="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE"
 
# custom keywords freischalten
 
IMAP_KEYWORDS=1
 
# für webadmin
 
IMAP_CAPABILITY_ORIG="IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 IDLE"
 
# Idle-Timeout des IMAP-Servers
 
IMAP_IDLE_TIMEOUT=60
 
#SASL PLAIN authentifizierung nach STARTTLS erlauben
 
IMAP_CAPABILITY_TLS="$IMAP_CAPABILITY AUTH=PLAIN"
 
# wird von webadmin benutzt
 
IMAP_CAPABILITY_TLS_ORIG="$IMAP_CAPABILITY_ORIG AUTH=PLAIN"
 
# darf der Client auf dem Server Thread und SORT Kommandos ausführen? (erhöht die Serverlast!)
 
IMAP_DISABLETHREADSORT=0
 
# In allen Ordnern nach neuer Mail suchen (nur sinnvoll, wenn Mails auf dem Server in die
 
# Unterordner sortiert werden). Erhöht die Last auf dem Server!
 
IMAP_CHECK_ALL_FOLDERS=0
 
# Workaround für Fehlerhafte Clients
 
IMAP_OBSOLETE_CLIENT=0
 
# Maximale größe des Serverprozesses (64MB) – kann gegen DoS-Attacken schützen
 
IMAP_ULIMITD=65536
 
# sollte bei der benutzung von “shared folders” unbedingt aktiv sein!
 
IMAP_USELOCKS=1
 
# Index aller zugänglichen Ordner
 
IMAP_SHAREDINDEXFILE=/etc/courier/shared/index
 
#Idle-Modus (für Konkurrierende Updates)
 
IMAP_ENHANCEDIDLE=0
 
# Name des Trash-Folders (für Outlook-Kompatibilität sollte hier “Deleted Items” stehen)
 
IMAP_TRASHFOLDERNAME=Trash
 
# Trash-Folder nach 7Tagen, Sent-Folder nach 30Tagen löschen (bezieht sich auf CTIME-Stamp)
 
IMAP_EMPTYTRASH=Trash:7,Sent:30
 
# Mails löschen oder in den Mülleimer werfen?
 
IMAP_MOVE_EXPUNGE_TO_TRASH=0
 
 
 
#Zusatzfeature: Mails verschicken durch ablegen in diesem Ordner
 
OUTBOX=.Outbox
 
# dazu wird das folgende sendmail aufgerufen
 
SENDMAIL=/usr/sbin/sendmail
 
# Headerfeld in dem der Absender nochmals hinterlegt wird, wenn eine Mail wie oben verschickt
 
# wird
 
HEADERFROM=X-IMAP-Sender
 
# IMAPD starten? (wird von manchen Distributionen in Init-Skripten abgefragt)
 
IMAPDSTART=YES
 
# Pfad zum Maildir
 
MAILDIRPATH=Maildir
 
</pre>
 
 
 
==Sicherheit mit SSL==
 
Secure Socket Layer (SSL v2/3) bzw. der Nachfolger Transport Layer Security (TLS vl) stellen ein Verfahren dar, mit dem sich beliebige TCP/IP-Verbindungen ver­schlüsseln lassen.
 
Sie setzen dabei auf sehr niedriger TCP/IP-Ebene in der Übertragung an (für Pro­fis: OSI-Schicht 3). Anders als als PGP, das auf Applikationsebene arbeitet (z. B. in der Mailsoftware), sichert SSL/TLS unmittelbar die TCP/IP-Verbindung zwi­schen zwei Hosts. Das macht es so flexibel, denn nahezu jedes Protokoll, das mit einem einzelnen Verbindungskanal auskommt, lässt sich damit über SSL/TLS absichern. Bekannte Vertreter sind z. B. HTTPs, POPSs, IMAPs oder SMTPs.
 
SSL/TLS funktioniert dabei grundsätzlich wieder nach dem von PGP bekannten Double-Key-Verfahren, d. h., es können auch zwei Hosts eine abhörsichere Verbin­dung aufbauen, die sich vorher noch gar nicht kannten. Durch das Double-Key-Verfahren ist es unnötig, über einen zweiten gesicherten Kanal zu verfügen, über den ein Schlüssel transportiert werden kann. Auch ein von vornherein mitlau­schender Angreifer bekommt die Secret Keys nie in die Hände - und ist damit nicht in der Lage, die mitgeschnittene Kommunikation zu dekodieren.
 
Eine verschlüsselte Verbindung zu einem unbekannten Host aufzubauen ist also kein Problem - etwas anders sieht es bei der Frage der Authentifizierung aus. Es könnte ein Angreifer in der Mitte sitzen und die übertragenen Schlüssel durch eigene ausgetauscht haben. Nur durch das Double-Key-Verfahren allein können wir Verschlüsselung einsetzen, können aber nicht garantieren, dass wir auch tat­sächlich mit demjenigen Daten austauschen, von dem wir glauben, er sei unser Partner.
 
Dieses Problem löst eine Signierung eines Public Keys. Dabei steht eine so genann­te Certification Authority (CA) durch eine digitale Unterschrift dafür ein, dass sie sich höchstselbst davon überzeugt hat, dass dieser Schlüssel einer bestimmten Person oder Organisation gehört.
 
CAs sind dabei nicht vorbestimmt: Praktisch jeder kann seine eigene CA aufma­chen und seine eigenen oder die Schlüssel Dritter signieren. Nur stellt sich die Frage, ob der Rest der Welt diese selbstgemachten CAs kennt und ihnen vertraut.
 
Große professionelle CAs haben dafür gesorgt, dass ihre CA-Schlüssel in den üb­lichen Mail- und Webclients bereits fest eingebunden sind. Jeder dieser Clients kann die von diesen CAs signierten Schlüssel sofort als gesichert und vertrau­enswürdig übernehmen.
 
Bei selbtgebauten CAs fällt das weg: Die Schlüssel sind zwar signiert - aber eben­falls von einer dem Client unbekannten CA. Der Client muss also den Benutzer fragen, ob er dieser CA vertraut. In der Praxis ist das ein einmaliger Vorgang. An der Qualität der Verschlüsselung ändert das rein gar nichts - nur die Frage, ob dieser Schlüssel dem gehört, von dem er zu sein scheint, lässt sich nicht hundert­prozentig klären.
 
Deshalb werden sich auch viele Firmen weiterhin ihre Schlüssel teuer von be­kannten, etablierten CAs signieren lassen:
 
http://www.verisign.com http://www.thawte.com
 
Wichtig sind absolut sicher authentifizierte Schlüssel vor allem bei Web-Servern: Hier wird garantiert, dass ein HTTPs-Schlüssel tatsächlich zur angesprochenen Webseite einer Bank gehört, und nicht etwa einem Man-in-the-Middle, der den Schlüssel ausgetauscht hat und so unsere Daten und PIN-Nummern zum Online-Banking ausspionieren möchte. Weitere zentrale Einsatzgebiete sind z. B. das Über­tragen von Konto- oder Kreditkartendaten beim Online-Shopping - aber auch die Abfrage von e-Mail Postfächern per e-Mail oder dergleichen.
 
Auch Mailserver lassen sich über SSL/TLS sichern: POPSs, IMAPs und SMTPs sind sehr sinnvoll und wünschenswert, aber bislang leider kaum vertreten. Die eigentlichen Verfahren POPS, IMAP und SMTP kommen dabei wie gewohnt zum Einsatz, an ihnen ändert sich nichts! SSL/TLS ist ja gerade eine Verschlüsselung auf Transportebene, d. h., die gesamte Verbindung wird gesichert, und darüber läuft dann „normales" POPS ab. Genauer könnte man sagen: HTTP, POPS, IMAP, SMTP über SSL/TLS.
 
So gut wie alle heutigen Mailclients unterstützen das. Manchmal ist es direkt als POPSs oder IMAPs benannt, manchmal ist es etwas verklausuliert in der Konfi­guration zu finden: „Server erfordert sichere Verbindung." Auf jeden Fall sollten Sie Ihre Nutzer grundsätzlich anhalten, diese Verfahren zu benutzen - es gibt eigentlich keine Nachteile, außer etwas CPU-Last. Auch hausintern sollten Sie grundsätzlich Verschlüsseltes POPS und IMAP einsetzen: Ausgespähte Passwör­ter sind ein vollkommen überflüssiges Sicherheitsrisiko.
 
Die Frage der Authentifizierung des Mailservers spielt dabei eine unwichtigere Rolle als bei Web-Servern. Häufig werden deshalb selbstsignierte Schlüssel ein­gesetzt, denn das spart die Signierungsskosten einer kommerziellen CA. Der An­wender kann dann darauf vertrauen, dass der Schlüssel tatsächlich zu seinem Mailserver gehört. Denn anders als beim Web hat es der Nutzer i. d. R. nicht mit völlig fremden, wechselnden Webservern unbekannter Anbieter zu tun, sondern stets mit „seinem" Mailserver, auf dem sein Postfach liegt.
 
Mailclients warnen teilweise beim Aufbau von POP3s oder IMAPs-Verbindungen zu Servern mit selbstsignierten Schlüsseln. Doch da der Nutzer diese Schlüssel lokal akzeptieren und abspeichern kann, ist man für die Zukunft trotzdem ge­sichert und kann Authentizität garantieren: Würde ein Angreifer den Schlüssel austauschen, so würde das der Mailclient merken, denn der übertragene Schlüs­sel stimmt nicht mehr mit dem gespeicherten überein.
 
Nicht unbedingt die Authentifizierung ist es also, die uns treibt, sondern die Verschlüsselung der Mailverbindungen! Sowohl die e-Mails als auch der POP3/ IMAP-Dialog wird kodiert. Und dadurch gehen auch Zugangsdaten zum Post­fach nie im Klartext über das Netz.
 
SSL/TLS macht jedoch Systeme wie PGP keinesfalls überflüssig. Denn SSL/TLS sichert nur den Moment des Transports. In der Sekunde des Abrufs gehen alle Daten unlesbar über die Leitung. Auf dem Server selbst und auch auf dem Client liegen sie hingegen im Klartext vor, wie immer. Ein Angreifer könnte die Mails dort problemlos lesen. Auch sonst kann man nie sicherstellen, wie eine e-Mail an das Ziel gelangt. Die wenigsten Mailserver versuchen untereinander eine SMTPs-Verbindung aufzubauen, i. d. R. wird Klartext-SMTP verwendet. Wollen wir also den elektronischen Briefumschlag zukleben, brauchen wir PGP. Und wollen wir unsere Login-Daten geheim halten, brauchen wir SSL/TLS. Es ist keine Frage des „entweder-oder", sondern eine Frage des „sowohl-als auch"!
 
  
 +
=Links=
 +
*http://www.whisperedshouts.de/dokumente/postfix-und-ldap-part-1-openldap-konfigurieren
 +
*http://wanderingbarque.com/howtos/mailserver/mailserver.html
 +
*http://acidx.net/wordpress/2014/06/installing-a-mailserver-with-postfix-dovecot-sasl-ldap-roundcube/
 +
*http://davmail.sourceforge.net/index.html
  
===Mails abholen mit IMAP-SSL===
+
=Migration=
 
+
*[[imapsync]]
Trotz seiner zusätzlichen Funktionalitäten überträgt IMAP sowohl Authentifizierung als auch die eigentlichen E-Mails unverschlüsselt.
+
*http://wiki2.dovecot.org/Migration
Hier hilft das Zusatzpaket courier-imap-ssl. Installiert wird es durch den Aufruf voneinander
+
*http://www.scalix.com/forums/viewtopic.php?f=9&t=14116
 
 
apt-get install courier-imap-ssl
 
 
 
Nach dem Download, vor der Installation erscheint ein Textfenster welches darauf hinweist, dass das Paket während der Installation ein selbstsigniertes Zertifikat generieren wird. Dieses ist zu demonstrationszwecken ausreichend. Für den Produktivbetrieb ist es jedoch unter Umständen angebracht das Zertfikat von einer offiziellen Zertifizierungsstelle unterschreiben zu lassen, so dass die Gültigkeit von jedem E-Mail-Client überprüft werden kann.
 
[[Datei:imap1.jpg]]
 
 
 
Nachdem das Paket installiert und das Zertifikat generiert ist sollte der imap-ssl Daemon starten.
 
Dies kann mit
 
 
 
pate:~# netstat -lntp | grep 993
 
tcp        0      0 0.0.0.0:993            0.0.0.0:*              LISTEN    16786/couriertcpd
 
 
 
überprüft werden.
 
Die Konfiguration ähnelt der des normalen IMAPd. Tatsächlich ist es sogar so, daß zuerst dessen Konfiguration eingelesen und dann durch den Inhalt von imapd-ssl ergänzt. Dadurch wird der Konfigurationsaufwand merklich verringert, da nicht alle Defaults noch einmal gesetzt werden müssen.
 
<pre>
 
pate:~# cat /etc/courier/imapd-ssl
 
#Port an dem imap-ssl lauschen soll
 
SSLPORT=993
 
#IP-Adresse (falls nich alle)
 
SSLADDRESS=0
 
#PID-Files
 
SSLPIDFILE=/var/run/courier/imapd-ssl.pid
 
IMAPDSSLSTART=YES
 
#IMAP-StartTLS-Funktionalität
 
IMAPDSTARTTLS=YES
 
#Login nur mit TLS, wenn Wert=1
 
IMAP_TLS_REQUIRED=0
 
COURIERTLS=/usr/bin/couriertls
 
TLS_PROTOCOL=SSL3
 
TLS_STARTTLS_PROTOCOL=TLS1
 
#Nur bestimmte Verschlüsselungsalgorithmen zulassen
 
# TLS_CIPHER_LIST="ALL:!ADH:RC4+RSA:+SSLv2:@STRENGTH"
 
#Pfad zur Zertifikatsdatei
 
TLS_CERTFILE=/etc/courier/imapd.pem
 
#Soll das Clientzertifikat überprüft werden (NONE=nein, PEER=wenn der Client ein Zertifikat
 
# vorlegt, REQUIREPEER=Fehler, wenn der Client kein Zertifikat vorlegt)
 
TLS_VERIFYPEER=NONE
 
#Sessioncache (experimentell)
 
TLS_CACHEFILE=/var/lib/courier/couriersslcache
 
TLS_CACHESIZE=524288
 
#Pfad zum Maildir
 
MAILDIRPATH=Maildir
 
</pre>
 
 
 
==Mails sicher verschicken: Postfix-mit TLS==
 
Um auch den Mailversand über Postfix sicher zu machen brauchen wir noch einige Pakete:
 
 
 
apt-get install postfix-tls libsasl2-modules-gssapi-heimdal libsasl2-modules sasl2-bin
 
 
 
Anders als bei Courier müssen wir das Zertifikat hier jedoch selbst generieren. Dabei hilft uns OpenSSL.
 
Die Befehle
 
/usr/lib/ssl/misc/CA.sh -newreq # zum erstellen einer Zertifizierungsanfrage
 
/usr/lib/ssl/misc/CA.sh -sign # zum unterschreiben der selben
 
und
 
openssl rsa < newreq.pem > key.pem # um einen Key ohne Passwort zu erhalten
 
 
 
sollten ausreichen, wenn schon eine CA existiert. Ansonsten kann eine solche vorher mit
 
/usr/lib/ssl/misc/CA.sh -newca
 
einfach erstellt werden.
 
 
 
Aschließend müssen die Zertifikate an die richtigen stellen kopiert werden:
 
cp newcert.pem /etc/postfix/cert.pem
 
cp key.pem /etc/postfix/key.pem
 
cp demoCA/cacert.pem /etc/postfix/CAcert.pem
 
chmod 400 /etc/postfix/*.pem
 
 
 
Damit ist Postfix vorbereitet. Nun muß TLS noch aktiviert werden. Hierzu werden folgende Einträge in der main.cf benötigt:
 
 
 
# aktiviert STARTTLS wenn Postfix Server ist:
 
smptd_use_tls = yes
 
 
# Loggt (nicht) in den Received-Zeilen:
 
smtpd_tls_received_header = no
 
 
smtpd_tls_key_file = /etc/postfix/key.pem
 
smtpd_tls_cert_file = /etc/postfix/cert.pem
 
smtpd_tls_CA_file = /etc/postfix/CAcert.pem
 
 
# Aktiviert STARTTLS wenn Postfix ausliefert:
 
smtp_use_tls = yes
 
 
smtp_tls_key_file = /etc/postfix/key.pem
 
smtp_tls_cert_file = /etc/postfix/cert.pem
 
smtp_tls_CA_file = /etc/postfix/CAcert.pem
 
 
 
 
 
Auch die master.cf muß angepasst werden:
 
 
 
smtps    inet  n      -      n      -      -      smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
 
587      inet  n      -      n      -      -      smtpd -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
 
 
 
(Diese beiden Zeilen sind dort wahrscheinlich schon vorhanden und müssen lediglich durch entfernen des Kommentarzeichens aktiviert werden)
 
 
 
=Beispiel mit sasl=
 
==Pakete==
 
*Postfix
 
*Courier-imap-ssl
 
*sasl2-bin
 
==Installation==
 
apt-get install postfix
 
apt-get install courier-imap-ssl
 
apt-get install sasl2-bin
 
==Konfiguration==
 
*Maildir Vorlage anlegen
 
mkdir -p /etc/skel/Maildir/new
 
mkdir -p /etc/skel/Maildir/cur
 
mkdir -p /etc/skel/Maildir/tmp
 
 
 
;In /etc/postfix/main.cf
 
:ändern
 
mydestination = echt-jetzt.de, smtp.echt-jetzt.de, mail.echt-jetzt.de, localhost.echt-jetzt.de, localhost
 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 '''${externeip adresse}'''
 
:hinzufügen
 
smtpd_sasl_auth_enable = yes
 
smtpd_recipient_restrictions = permit_mynetworks,
 
                                permit_sasl_authenticated,
 
                                reject_unauth_destination
 
 
smtpd_helo_restrictions = permit_sasl_authenticated,
 
                          permit_mynetworks,
 
                          reject_invalid_hostname,
 
                          reject_unauth_pipelining,
 
                          reject_non_fqdn_hostname
 
 
smtpd_sasl_path = smtpd
 
home_mailbox=Maildir/
 
 
broken_sasl_auth_clients = yes
 
;In /etc/postfix/master.cf
 
:unkommentieren
 
smtps    inet  n      -      -      -      -      smtpd
 
  -o smtpd_tls_wrappermode=yes
 
  -o smtpd_sasl_auth_enable=yes
 
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 
 
 
 
 
; /etc/postfix/sasl/smtpd.conf erstellen
 
echo "pwcheck_method: saslauthd" >> /etc/postfix/sasl/smtpd.conf
 
echo "mech_list: PLAIN LOGIN" >> /etc/postfix/sasl/smtpd.conf
 
echo "saslauthd_path: /var/run/saslauthd/mux" >>/etc/postfix/sasl/smtpd.conf
 
 
 
; gruppenberechtigung für SASL setzen
 
adduser postfix sasl
 
 
 
SASL Socket in den chroot legen
 
----
 
;In /etc/default/saslauthd
 
:ändern
 
START=yes
 
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
 
 
 
; daemons neu starten
 
/etc/init.d/saslauthd restart
 
/etc/init.d/postfix restart
 
 
 
;sasl testen
 
testsaslauthd -f  /var/spool/postfix/var/run/saslauthd/mux  -s smtp -u user -p userpasswd
 
 
 
==Courier Zertifikat einrichten==
 
cat example.com.key example.com.crt > /etc/courier/imapd.pem
 
cp ca.pem  /etc/ssl/certs/
 
/etc/init.d/courier-imap-ssl restart
 
 
 
==Open-Relay Test==
 
*Von aussen
 
http://www.mailradar.com/openrelay/
 
 
 
http://www.abuse.net/relay.html
 
*Telnet auf localhost
 
'''telnet localhost 25'''
 
Trying 127.0.0.1...
 
Connected to localhost.
 
Escape character is '^]'.
 
220 echt-jetzt.de ESMTP Postfix (Ubuntu)
 
'''HELO whitehouse.com'''
 
250 echt-jetzt.de
 
'''MAIL From:<goerge.w@whitehouse.com>'''
 
250 2.1.0 Ok
 
'''RCPT TO:<hutze@echt-jetzt.de>'''
 
250 2.1.5 Ok
 
'''Subject:Matter of national security!'''
 
221 2.7.0 Error: I can break rules, too. Goodbye.
 
 
 
==Roundcube einfach==
 
 
 
 
 
sudo apt-get install roundcube roundcube-mysql
 
sudo gedit /etc/roundcube/apache.conf
 
sudo /etc/init/d/apache2 restart
 
sudo gedit /usr/share/roundcube/program/include/iniset.php
 
PHP Code:
 
$include_path.= '/usr/share/php' . PATH_SEPARATOR;
 
after the line 46 :
 
PHP Code:
 
$include_path.= INSTALL_PATH . 'program/include' . PATH_SEPARATOR;
 
 
 
==Roundcube Web Frontend==
 
apt-get install php-pear php5-mysql php-mdb2 php-net-smtp php-mail-mime
 
sudo apt-get install lamp-server^
 
pear install channel://pear.php.net/Net_IDNA2-0.1.1
 
echo date.timezone = 'UTC' >> /etc/php5/pache2/php.ini
 
 
 
Roundcube runter laden
 
neuste version runterladen
 
;Tar umbenennen und entpacken
 
tar xzf roundcubemail-0.*.tar.gz
 
;Roundcube in Web-server verschieben
 
mv roundcubemail-0.6 /var/www/webmail
 
;MySQL installieren
 
apt-get install mysql-server
 
 
 
;MySQL für Roundcube einrichten
 
mysql -u root -p
 
CREATE DATAVABASE roundcube;
 
CREATE USER roundcube;
 
SET PASSWORD FOR 'roundcube' = PASSWORD('12345');
 
GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcube' IDENTIFIED BY '12345';
 
exit
 
 
 
mysql roundcubemail -p < SQL/mysql.initial.sql
 
;Roundcube ''installer'' ausführen über Browser
 
http://example.de/webmail/installer
 
;Konfiguration über Browser
 
*Bei '''Database setup''' die korrekten Daten eintragen
 
*Bei '''IMAP Settings''' den '''default_host''' mit ssl: '''ssl://imap.example.de''' eintragen und port auf '''993''' stellen
 
*Bei '''SMTP Setiings''' den '''smtp_server''' mit ssl: '''ssl://smtp.example.de''' eintragen und port auf '''465''' stellen sowie '''Use the current IMAP username and password for SMTP authentication''' ankreuzen!
 
*Continue
 
;Die angezeigten Konfigurations Dateien: '''db.inc.php''' und '''main.inc.php''' in dem '''/config''' Ordner der Roundcube Installation anlegen und übernehmen
 
*Continue
 
;In der Roundcube Installation die Ordner '''temp''' und '''logs''' sowie die eben erstellten Konfigurationsdateien für den Webserver beschreibbar machen
 
chown www-data temp logs config/db.inc.php config/main.inc.php
 
;'''installer''' aus der Roundcube installation entfernen
 
rm installer
 
 
 
==Roundcube Plugin installieren - carddav==
 
 
 
Annahme: Roundcube Verzeichnis ist /var/www/webmail
 
 
 
(sollte roundcube in einem anderen Verzeichnis sein bitte entsprechend anpassen)
 
 
 
 
 
Paket herunterladen und in Plugin-Verzeichnis entpacken und evtl. umbenennen, Rechte anpassen
 
tar xvfz carddav_x.tar.bz2 /var/www/webmail/plugins/
 
mv /var/www/webmail/plugins/carddav_x /var/www/webmail/plugins/carddav
 
 
 
PostgreSQL - roundcube Datenbank anpassen - Ausführen von ../plugins/carddav/SQL/postgres.sql:
 
psql -Uroundcube roundcube < /var/www/webmail/plugins/carddav/SQL/postgres.sql
 
 
 
ODER:
 
 
 
MySQL - roundcube Datenbank anpassen - Ausführen von ../plugins/carddav/SQL/mysql.sql:
 
mysql -u roundcube -p roundcubemail < /var/www/webmail/plugins/carddav/SQL/mysql.sql
 
 
 
in Datei vi /var/www/webmail/config/main.inc.php das Plugin aktivieren:
 
// List of active plugins (in plugins/ directory)
 
$rcmail_config['plugins'] = array('carddav');
 
 
 
Konfigdatei anlegen
 
  cp /var/www/webmail/plugins/carddav/config.inc.php.dist /var/www/webmail/plugins/carddav/config.inc.php
 
 
 
Danach im Browser unter 'Einstellungen' das carddav Plugin konfigurieren.
 
 
 
==Roundcube Plugin installieren - calendar==
 
Annahme: Roundcube Verzeichnis ist /var/www/webmail
 
 
 
(sollte roundcube in einem anderen Verzeichnis sein bitte entsprechend anpassen)
 
 
 
Voraussetzung: Installation von myroundcube Plugin Manager
 
 
 
Zuerst myroundcube Plugin Manager installieren
 
 
 
Paket von http://myroundcube.com/myroundcube-plugins/plugin-manager herunterladen und in Plugin-Verzeichnis entpacken
 
unzip plugins.zip -d /var/www/webmail/
 
 
 
Plugin aktivieren
 
vi /var/www/webmail/config/main.inc.php
 
 
// List of active plugins (in plugins/ directory)
 
$rcmail_config['plugins'] = array('carddav','plugin_manager');
 
 
 
Der naechste Benutzer, der sich anmeldet gilt als plugin manager admin benutzer
 
(kann auch in config.inc.php angegeben werden, dazu dann config.inc.php.dist nach config.inc.php kopieren und bearbeiten)
 
 
 
Falls Feld Kundennummer leer:
 
Bei Einstellungen->Erweiterungen verwalten->Kundenkonto->neue Kundennummer anforden
 
 
 
Dann:
 
Einstellungen -> Bereich Erweiterungen Verwalten -> Updates herunterladen ->I agree-> Liste der Plugins
 
 
 
Drauf achten, dass bei den gewünschten Plugins in der checkbox ein Häckchen hat und 'Zip-Archiv herunterladen' anklicken (zur Sicherheit am besten noch rechts unten 'kostenpflichtige Downloads abwählen' anklicken)
 
 
 
folge Plugins auswählen:
 
calendar
 
jqueryui
 
jscolor
 
qtip
 
http_auth
 
http_request
 
timepicker
 
 
 
Datei (plugins.zip) auf Server kopieren und in Plugin Verzeichnis enpacken:
 
unzip /root/plugins.zip -d /var/www/webmail/
 
 
 
MySQL - roundcube Datenbank anpassen - Ausführen von ../plugins/calendar/SQL/mysql.sql:
 
mysql -u roundcube -p roundcubemail < /var/www/webmail/plugins/calendar/SQL/mysql.sql
 
 
 
Konfigdatei anlegen
 
  cp /var/www/webmail/plugins/calendar/config.inc.php.example /var/www/webmail/plugins/calendar/config.inc.php
 
 
 
config.inc.php solange bearbeiten, bis beim Aufruf von 'Einstellungen' keine php Fehler mehr auftauchen, also Löschen bzw. auskommentieren der Modulabschnitte in der Konfig, die zu nicht installierten Modulen gehören.
 
 
 
Fertig.
 
 
 
==MX Backup Mailserver einrichten==
 
;MX Record auf DNS in zone des Mainservers eintragen
 
MX      20 mail.zweebrigge.de.
 
;Auf Mainserver in '''main.cf''' hinzufügen
 
smtpd_recipient_restrictions = permit_mynetworks,
 
                                permit_sasl_authenticated,
 
                                reject_unauth_destination,
 
                                '''permit_mx_backup'''
 
;Auf Backupserver in '''main.cf''' hinzufügen
 
smtpd_recipient_restrictions = permit_mynetworks,
 
                                '''permit_mx_backup,'''
 
                                permit_sasl_authenticated,
 
                                reject
 
'''relay_domains = $mydestination, hash:/etc/postfix/relay_domains'''
 
'''maximal_queue_lifetime = 60d'''
 
;In '''/etc/postfix/maps/relay_domains''' Mainserver Domain eintragen
 
echt-jetzt.de x
 
;Postfix lookup table aktivieren
 
postmap relay_domains
 
;Postfix neustarten
 
/etc/init.d/postfix restart
 
 
 
==Mail Forward==
 
Um mit Postfix ein forwarding von Mails einzurichten muss man in '''/etc/postfix/main.cf''' folgende Zeilen addieren:
 
virtual_alias_domains = suxer.com
 
virtual_alias_maps = hash:/etc/postfix/virtual
 
Damit werden die Domains die bei '''virtual_alias_domains''' aufgelistet sind zu Domains die der Mailserver behandelt und nicht abweißt. In unserem Beispiel wäre das die Domain '''suxer.com'''.
 
In der Zeile mit '''virtual_alias_maps''' legt man die zuständige Konfigurationsdatei fest.
 
 
 
Nun erstellt man die Konfigurationsdatei in der festgelegt wird, welche domain wohin weitergeleitet werden soll mit:
 
vi /etc/postfix/virtual
 
 
 
In unserem Beispiel addieren wir jetzt folgende Zeile:
 
xinux@suxer.com  schmeich@daneich.de
 
Dies wird alle Mails die an '''xinux@suxer.com''' gesendet werden auf unserem Mailserver entgegennehmen und sie weiterleiten an '''schmeich@daneich.de'''
 
 
Nun schließen wir die Datei und laden die in Postfix ein mit:
 
postmap /etc/postfix/virtual
 
service postfix reload
 
Man beachte das bei jeder änderung der Datei '''postmap''' wieder aufgerufen werden muss.
 
 
 
==authsmtp==
 
 
 
This instructions will guide you through configuring Postfix to use AuthSMTP as an authenticated SMTP relay host for all your outbound email.
 
First you need to make sure the email address(es) you will be sending from have been authorised for your account in our Control Panel.
 
These instructions assume your server is already configured with Postfix, email can be received and you have external network access on one of the following ports -
 
23, 25, 26, 2525
 
 
 
>cd /etc/postfix
 
 
 
Backup your configuration files:
 
>mkdir /POSTFIX_BACKUP
 
>cp /etc/postfix/* /POSTFIX_BACKUP
 
 
 
Open your Postfix configuration file (typically /etc/postfix/main.cf) using 'vi' or an alternative file editor and do the following:
 
>vi /etc/postfix/main.cf
 
 
 
Add the following lines to the bottom of the file:
 
smtp_sasl_auth_enable = yes
 
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
 
smtp_sasl_mechanism_filter =
 
smtp_sasl_security_options =
 
relayhost = mail.authsmtp.com
 
 
 
The above configuration use's the default 'plain' SASL authentication mechanism but you have the option of PLAIN, LOGIN, CRAM-MD5 and DIGEST-MD5 but to use those is an advanced Postfix topic that should only be approached by advanced users.
 
 
 
This next step is optional - the default SMTP port is 25 but some ISPs block this port so if you wish to use one of the alternative ports (23, 26, 2525) please add ':' and the alternative port to the end of the 'relayhost' line, so it should read as follows:
 
relayhost = mail.authsmtp.com:2525
 
 
 
If you wish to send your messages using TLS/SSL you will need to also add the two following lines:
 
smtp_tls_security_level = encrypt
 
smtp_tls_mandatory_ciphers = high
 
 
 
'''IMPORTANT: If you do wish to send your messages using SSL you will also need to login to the Control Panel and enable SSL on your account.'''
 
 
 
Open your SASL password file (typically /etc/postfix/sasl_passwd) using 'vi' or an alternative file editor and add the following line replacing 'username' and 'password' with your AuthSMTP username and password:
 
mail.authsmtp.com    username:password
 
 
 
Save and close the file, then run the following command on your SASL password file:
 
>postmap hash:/etc/postfix/sasl_passwd
 
 
 
Once you have made the changes you will need to restart Postfix for the changes to take effect:
 
>/etc/rc.d/init.d/postfix restart
 
 
 
==no shell==
 
 
 
chsh -s /usr/sbin/nologin
 
 
 
==Blacklist & Whitelist==
 
 
 
Es gibt zwei verschiedene Arten zu blocken:
 
*Client: IP(Range)/Hostname
 
check_client_access
 
 
 
*Sender: FROM-Field (= Domain)
 
check_sender_access
 
 
 
Trage diese Regel in die main.cf ein: (Am besten fügt man das weit oben ein)
 
===Main.cf-Eintrag===
 
vi /etc/postfix/main.cf
 
 
 
<pre>
 
smtpd_recipient_restrictions =
 
  check_client_access hash:/etc/postfix/client_checks,
 
  check_sender_access hash:/etc/postfix/sender_checks,
 
  ...
 
</pre>
 
===List-Erstellung===
 
vi /etc/postfix/client_checks
 
 
 
# Restricts which clients this system accepts SMTP connections from.
 
<pre>
 
example.com              REJECT No spammers
 
.example.com              REJECT No spammers, from your subdomain
 
123.456.789.123          REJECT Your IP is spammer
 
123.456.789.0/24          REJECT Your IP range is spammer
 
321.987.654.321          OK
 
example1.com              OK
 
</pre>
 
 
 
vi /etc/postfix/sender_checks
 
 
 
# Restricts sender addresses this system accepts in MAIL FROM commands.
 
<pre>
 
example.com              REJECT env. from addr any@example.com rejected
 
.example.com            REJECT env. from addr any@sub.example.com rejected
 
user@example.com        REJECT We don't want your email
 
example2.com            OK
 
</pre>
 
 
 
'''OK is allowed '''
 
'''REJECT is block '''
 
 
 
 
 
Wenn Änderungen vorgenommen wurden, muss man die Datenbank aktualisieren!
 
 
 
===reload/restart===
 
postmap /etc/postfix/client_checks
 
postmap /etc/postfix/sender_checks
 
 
 
Oder man schreibt es in '''/etc/init.d/postfix '''
 
vi /etc/init.d/postfix
 
Unter dem Casepunkt "start" fügt man an das Ende des Skriptes das an:
 
/usr/sbin/postmap /etc/postfix/sender_checks
 
 
 
Beispiel: (Auszug aus der /etc/init.d/postfix)
 
<pre>
 
case "$1" in
 
    start)
 
        log_daemon_msg "Starting Postfix Mail Transport Agent" postfix
 
        RET=0
 
        # for all instances that are not already running, handle chroot setup if needed, and start
 
        for INSTANCE in $(enabled_instances); do
 
            RUNNING=$(running $INSTANCE)
 
            if [ "X$RUNNING" = X ]; then
 
                configure_instance $INSTANCE
 
                CMD="/usr/sbin/postmulti -- -i $INSTANCE -x ${DAEMON}"
 
                if ! start-stop-daemon --start --exec $CMD quiet-quick-start; then
 
                    RET=1
 
                fi
 
            fi
 
        done
 
        log_end_msg $RET
 
        /usr/sbin/postmap /etc/postfix/sender_checks
 
    ;;
 
</pre>
 
 
 
Danach Postfix reload/restart
 
/etc/init.d/postfix restart
 
 
 
===Link===
 
: http://linuxlasse.net/linux/howtos/Blacklist_and_Whitelist_with_Postfix
 
 
 
==nützliche Tools==
 
 
===postconf===
 
 
 
Zeigt alle Einstellungen der main.cf, die nicht den Defaultwerten entsprechen:
 
 
 
postconf -n
 
Zeigt den Defaultwert einer Variable an; ignoriert also den Wert aus der main.cf:
 
 
 
postconf -d myorigin
 
myorigin = $myhostname
 
Die Abfrage von Variablen direkt aus unserem laufenden Postfix heraus erfolgt ohne Parameterangabe:
 
 
 
postconf myorigin
 
myorigin = $mydomain
 
Wollen wir einen Parameter ändern, so benutzen wir die Option -e
 
 
 
<pre>
 
postconf -d smtpd_client_connection_count_limit
 
smtpd_client_connection_count_limit = 50
 
 
 
postconf smtpd_client_connection_count_limit
 
smtpd_client_connection_count_limit = 10
 
 
 
postconf -e "smtpd_client_connection_count_limit = 15"
 
 
 
postconf smtpd_client_connection_count_limit
 
smtpd_client_connection_count_limit = 15
 
</pre>
 
 
 
Anschließend muss via service postfix reload der laufende Daemon noch von der Änderung an der main.cf informiert werden
 
 
 
 
===postqueue===
 
 
 
Zeigt eine vollständige Übersicht aller eMails in den Warteschlangen
 
 
 
postqueue -p
 
Alle eMails in der deferred-Queue werden sofort wieder zur Auslieferung gebracht
 
 
 
postqueue -f
 
 
 
 
 
===postsuper===
 
 
 
Um alle Nachrichten aus der Mailqueu erneut zur Auslieferung zu bringen, erreichen wir durch:
 
postsuper -r ALL
 
 
 
Löschen der eMail mit der <QUEUE-ID> aus der Warteschlange
 
postsuper -d <QUEUE-ID>
 
 
 
Will man mehrere Nachrichten eines bestimmten Absenders bzw. Empfängers löschen, so wäre die manuelle Löschung von z.B. mehreren Tausenden von Nachrichten nicht mehr durchzuführen.
 
In der Manpage von postsuper findet man hierzu einen sehr Hilfreichen Tip (Die Variabeln sind dabei wie folgt belegt: $7=sender, $8=recipient1, $9=recipient2)
 
 
 
Mit folgendem Befehl löscht man z.B. alle Nachrichten von gaudiwurm@nerv.com:
 
mailq | tail +2 | grep -v '^ *(' | awk  'BEGIN { RS = "" } { if ($7 == "gaudiwurm@nerv.com") print $1 }' | tr -d '*!' | postsuper -d -
 
 
 
alternativ empfiehlt sich das delete_from_mailq.pl von Victor Duchovni
 
<pre>
 
#!/usr/bin/perl
 
 
 
$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";
 
 
 
@data = qx</usr/sbin/postqueue -p>;
 
for (@data) {
 
  if (/^(\w+)(\*|\!)?\s/) {
 
    $queue_id = $1;
 
  }
 
  if($queue_id) {
 
    if (/$REGEXP/i) {
 
      $Q{$queue_id} = 1;
 
      $queue_id = "";
 
    }
 
  }
 
}
 
 
 
#open(POSTSUPER,"|cat") || die "couldn't open postsuper" ;
 
open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ;
 
 
 
foreach (keys %Q) {
 
  print POSTSUPER "$_\n";
 
};
 
close(POSTSUPER);
 
</pre>
 
 
 
 
 
===postalias===
 
 
 
Konvertiert die Datei aliases in das binäre Datenbankformat. (Auf Grund der Doppelpunkte funktioniert hier postmap nicht!) Muss nach jedem Ändern der /etc/aliases aufgerufen werden!
 
postalias /etc/aliases
 
 
 
postmap
 
Konvertiert die angegebene Textdatei in das binäre Datenbankformat. Muss nach jeder Änderung an der Textdatei aufgerufen werden!
 
 
 
postmap /etc/postfix/policyd_weight_client_whitelist
 
Listet alle einträge einer Datenbank (i.e. policyd_weight_client_whitelist) auf:
 
 
 
postmap -s /etc/postfix/policyd_weight_client_whitelist
 
kundenserver.de OK
 
 
 
 
 
===lsof===
 
 
 
Zeigt welches Programm (Command) auf dem gennaten Port lauscht/reagiert.
 
lsof -i :25
 
COMMAND  PID    USER  FD  TYPE  DEVICE SIZE NODE NAME
 
smtpd  22703 postfix    6u  IPv4 2790158      TCP *:smtp (LISTEN)
 
smtpd  22803 postfix    6u  IPv4 2790158      TCP *:smtp (LISTEN)
 
master  31413    root  11u  IPv4 2790158      TCP *:smtp (LISTEN)
 
 
 
 
===mailx===
 
 
 
Nachrichtentext (Mailbody) wird mit dem Subject „Betreff“ an den postmaster und in cc an bigchief geschickt
 
echo Nachrichtentext | mailx -s "Betreff" -c bigchief postmaster
 
 
 
 
 
===uuenview===
 
 
 
Will man Nachrichten mit Anhängen von der Konsole aus verschicken, so z.B.
 
Status- oder Logfiles via cronjob, so bendient man sich am besten uuenview.
 
Das Postfixlog (/var/log/maillog) wird als Anhang an den User mit der Adresse empfaenger@nausch.org geschickt.
 
Absender ist absender@nausch.org, wobei wir als Rückantwortadresse rueckantwortadresse@nausch.org mitgeben.
 
 
 
# /usr/bin/uuenview -b -s "Betreff" -r rueckantwortadresse@nausch.org -f absender@nausch.org -m empfaenger@nausch.org /var/log/maillog
 
 
 
=Links=
 
: http://nodomain.cc/2007/03/14/howto-postfix-als-backup-mx-einrichten.html
 
: http://www.cyberciti.biz/faq/linux-unix-bsd-postfix-forward-email-to-another-account/
 
: http://dokuwiki.nausch.org/doku.php/centos:mailserver:nuetzliche_kommandos_rund_um_postfix
 
: http://www.authsmtp.com/postfix/
 
: http://www.huschi.net/4_220_de-postfix-greylisting-mit-postgrey-debian.html
 
: http://www.weareroot.de/2008/07/24/postfix-absender-bei-mailversand-von-der-konsole-anpassen/
 

Aktuelle Version vom 22. Juli 2021, 06:47 Uhr