• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[HowTo] Mailserver mit Postfix, Fetchmail, Dovecot

Status
Für weitere Antworten geschlossen.
Dokumentation Mailserver

Diese Dokumentation beschreibt das Einrichten eines Mailservers unter SUSE 10 mit Fetchmail, Postfix und Dovecot-IMAP-Server.
Da ich selbst Linux-Neuling bin, wurde das ganze von einigen größeren und kleineren Problemen begleitet.
Letztendlich denke ich aber, dass das ganze eine runde Sache abgibt und hoffe es ist frei von Fehlern.

1. Mit Fetchmail POP3 Postfächer abholen

Mit Fetchmail kann man seine Emails über das Pop3 Protokoll bei seinem Provider abholen.

- Installation mit YAST
- Im Runleveleditor den Fetchmail Dienst aktivieren (Runlevel 3+5)
- User inkl. Homeverzeichnissen anlegen

Damit Fetchmail funktioniert, muss eine Datei namens Fetchmailrc erstellt werden. Ich habe Sie unter /etc abgelegt. Also tun wir das nun:

- vi /etc/fetchmailrc
Code:
[Inhalt der fetchmailrc; minimal Konfigration]

#Konto für User Fred wird bei 1und1 abgeholt
server pop.1und1.com		
proto pop3
user pt123456789
password sagichnet
to fred		 #lokaler Linux User.

# Konto für User Berta wird bei 1und1 abgeholt
server pop.1und1.com
proto pop3
user pt987654321
password sagichauchnet
to berta

usw…..
Anschließend sollten die Rechte der Datei geändert werden in 660

- chmod 660 /etc/fetchmailrc

Damit die Emails periodisch vom Server geholt werden, müssen wir nur noch den Dienst über den Runleveleditor im Yast starten.
Oder mit

- insserv –d /etc/init.d/fetchmail

Somit wird der Dienst per Default in den Runlevels 3+5 gestartet
Jetzt werden die Mails per Default alle 600 sec vom Provider geholt.

Soll der Defaultwert geändert werden, muss in /etc/init.d/fetchmail der Polling Wert geändert werden. z.B. 60 für jede Minute.

- vi /etc/init.d/fetchmail

Code:
# Check for existence of needed config file and read it 
FETCHMAIL_CONFIG=/etc/sysconfig/fetchmail 
FETCHMAIL_RC=/etc/fetchmailrc 
test -r $FETCHMAIL_CONFIG || { echo "$FETCHMAIL_CONFIG not existing"; 
if [ "$1" = "stop" ]; then exit 0; 
else exit 6; fi; } 
test -r $FETCHMAIL_RC || { echo "$FETCHMAIL_RC not existing"; 
if [ "$1" = "stop" ]; then exit 0; 
else exit 6; fi; } 

# Read config 
FETCHMAIL_POLLING_INTERVAL=600 
FETCHMAIL_FETCHALL=yes 
FETCHMAIL_FETCHALL_OPTION= 
FETCHMAIL_SILENT=no 
FETCHMAIL_SILENT_OPTION= 
FETCHMAIL_EXPERT_OPTIONS= 
. $FETCHMAIL_CONFIG 
if [ $FETCHMAIL_FETCHALL = "yes" ] ; then 
FETCHMAIL_FETCHALL_OPTION=" -a" 
fi 
if [ $FETCHMAIL_SILENT = "yes" ] ; then 
FETCHMAIL_SILENT_OPTION=" -s" 
fi

Anschließend den Polling Wert auch noch unter /etc/sysconfig/fetchmail ändern.

- vi /etc/init.d/fetchmail

Code:
FETCHMAIL_POLLING_INTERVAL=600
Eventuell Fetchmail neu starten

- rcfetchmail restart

So fertig. Fetchmail ruft nun alle 6 min die POP3 Postfächer ab, und übergibt die Mails anschließend an den lokalen smtp Server. (sobald er installiert ist ;-) )

- Fetchmail Logfile
o tail –f /var/log/fetchmail

2. Dovecot-IMAP Server
Um über IMAP auf die Emails zugreifen zu können benötigen wir noch ein kleines Programm, welches dies ermöglicht. Ich habe mich für Dovecot entschieden da es sehr einfach aufgebaut ist. Es gibt noch Cyrus, wobei ich denke dass er sich erst „lohnt“ wenn man es mit vielen Usern zu tun hat, da er sehr umfangreich ist. UW-IMAP wäre auch noch ne alternative zu Dovecot.

Also das Paket für Dovecot findet sich nur auf Kauf-DVD oder superumständlich im Internet.

- installiert wird es nach /etc/dovecot
- Konfigdatei: /etc/dovecot/dovecot.conf

Der einzige Parameter den ich geändert habe war:

Code:
	Devault_mail _env = maildir:%h/mails

Somit schaut Dovecot im Homedir der User im Verzeichnis „mails“ nach Emails.
Das ganze funktioniert dann wieder über den lokalen Linuxuser inkl. Passwort, der dann im Emailclient eingetragen wird. Man kann den IMAP Zugriff auch über ein Zertifikat regeln.
Auch Dovecot sollte als Dienst gestartet werden.

- Dovecot als Dienst starten lassen. Runlevel 3+5. Am besten über den Runleveleditor
im Yast.

3. Postfix einrichten

So nun müssen wir noch den Postfix konfigurieren und fertig ist das Ding.
Punkt 1: Postfixbuch kaufen, lesen und daneben legen.

Wir müssen Hauptsächlich in einer Datei editieren. Der main.cf.

- installiert ist postfix unter /etc/posfix
- konfigdatei: /etc/postfic/main.cf

Code:
[Auszug der main.cf ]

alias_maps = hash:/etc/aliases
#in diese Datei werden die lokalen User eingetragen, somit wird lokales Senden und Empfangen über die öffentliche Emailadresse ermöglicht.
biff = no
canonical_maps = hash:/etc/postfix/canonical
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/lib/postfix
debug_peer_level = 2
default_transport = smtp
disable_dns_lookups = yes
disable_mime_output_conversion = no
fast_flush_domains =
header_checks = regexp:/etc/postfix/header_checks
home_mailbox = mails/
#dieser Pfad verweist automatisch auf das Homedir der user. Und da es bei mir /home/linuxuser/mails heißt, reicht es nur mails/ einzugeben.  
html_directory = /usr/share/doc/packages/postfix/html
inet_protocols = all
local_transport = local
mail_name = Postfix
mail_owner = postfix
mail_spool_directory = /var/mail
mailbox_size_limit = 0
#Größenbeschränkung der Mailbox in Byte Achtung 0 = unendlich
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
masquerade_classes = envelope_sender, header_sender, header_recipient
masquerade_domains = $mydomain
masquerade_exceptions = root
message_size_limit = 0
#Größe der Emails die akzeptiert werden in Byte. Achtung 0 = unendlich
mydestination = $mydomain, $mydomain,localhost, localhost.$mydomain
mydomain = maildomaene.de
#Beschreibt die Maildomäne des Providers, Hat ein Empfänger oder Absender diese Endung in der Mailadresse ist er schonmal “ein wenig vertrauensvoll“
myhostname = mail.lokaledomaene
#Hostname.Domänenname des Linux PC´s
mynetworks = 192.168.2.0/24, 127.0.0.0/8
# der Netzbereich von dem Verbindungen zum Postfix aufgebaut werden dürfen inkl. Netzmaske
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/packages/postfix/README_FILES
relayhost = smtp.1und1.com
relocated_maps = hash:/etc/postfix/relocated
sample_directory = /usr/share/doc/packages/postfix/samples
sender_canonical_maps = hash:/etc/postfix/sender_canonical
sendmail_path = /usr/sbin/sendmail
setgid_group = maildrop
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
#in dieser Datei finden sich die Zugangsdaten zum 1und1 SMTP Server
smtp_sasl_security_options = noanonymous
#Anonymer login wird verweigert
smtp_use_tls = no
#Über smtpd_.... warden Berechtigungen/Regeln erstellt. Die Email egal ob nach extern oder nach intern muss diese Prüfungen bestehen ansonsten wird sie nicht zugestellt. 
smtpd_client_restrictions = permit_mynetworks,
#Clients die Mails senden und eine IP aus dem Bereich von $MYNETWORKS haben werden zur nächsten Prüfung “geschickt” wenn Sie einem anderen IP Bereich angehören wird die Zustellung verweigert
smtpd_helo_required = yes
#Mails von Mailservern die kein HELO oder EHLO senden  werden nicht angenommen. Es gibt wohl Spammer die HELO nicht senden
smtpd_helo_restrictions = reject_invalid_hostname
#Wenn nach dem HELO eine komische Syntax (z.B. Leerzeichen) verwendet wird, wird die Mail verworfen
smtpd_recipient_restrictions = reject_unknown_recipient_domain,
reject_unauth_destination,
# reject_unknown_recipient_domain: die EMpfängerdomäne muss einen #gültigen MX  Rekord besitzen
# reject_unauth_destination  verwirft das Absenden von Emails  zu  Zielen die #nicht unter $inet_interfaces, $mydestination oder $relay_domains, smtpd_sasl_auth_enable = no
smtpd_sender_restrictions = reject_unknown_sender_domain,
#Absenderadresse muss gültigen MX-Rekord haben. Haben zwar nicht wir aber 1und1
reject_non_fqdn_sendersmtpd_use_tls = no
strict_8bitmime = no
strict_rfc821_envelopes = no
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 550

3.2 Authentifizierung beim Provider

Der Eintrag „smtp_sasl_password_maps“ verweist auf die Datei „smtp-auth“
In dieser Datei müssen die Benutzerdaten des Providers die zur Authentifizierung verwendet werden eingetragen werden. Diese Datei müssen wir erst noch anlegen.

- vi /etc/postfix/smtp-auth
Code:
[Auzug der smtp-auth]
smtp.1und1.com 	pt1235:bastian
#SMTP-SERVER	#irgendein-1und1-User:passwort_bei_1und1
Anschließend muss Datei gehasht werden:

- postmap /etc/posfix/smtp-auth

3.3 Lokale Mailzustellung

Für die lokale Mailzustellung ist der Eintrag „alias_maps = hash:/etc/aliases“ zuständig. Somit wird erreicht dass eine Email die an einen Kollegen gehen soll nicht erst zu 1und1 und von dort wieder abgeholt wird. Sie bleibt als im LAN.
(Es soll auch irgendwie ohne diesen Eintrag gehen, habe das aber nicht geschafft) Die Datei „etc/aliases“ sollte schon vorhanden sein und muss nur noch um die Einträge der User erweitert werden.

Die Einträge müssen nach folgendem Schema erfolgen, wobei beim Mailuser (Emailadresse) das „@Domänenname“ wegzulassen ist.
z.B. Mailuser : carlos.dunga@web.de = Linuxuser : carlosd

Dann muss das ganze so aussehen:

- vi /etc/aliases
Code:
[Auszug der /etc/aliases]
carlos.dunga:	carlosd
Anschließend muss aus der Datei /etc/aliases noch eine Datenbank für den Postfix erstellt werden. Dies muss nach jeder Änderung an der Datei aliases getan werden:

- postalias /etc/aliases

Nun ist der Punkt gekommen an dem man das ganze einmal testen könnte. Einfach eine Email einem Webmailer als das 1und1 Konto auf das 1und1 Konto schicken, 15 min warten (oder fetchmailrc ausführen) und die Email mit dem zuvor auf IMAP Konfigurierten Email Client empfangen und dann wieder zurückschicken. #

Und sehet her es funktioniert. Wenn nicht dann checke alle Konfigfiles nach Tippfehlern, erzeugt noch mal die Datenbanken oder schaut ins maillog (siehe unten)

4. Kommandosammlung

4.1 Linux

ps –ef # laufende Linux Prozesse anzeigen
ps –ef | grep Dovecot # zeigt nur Dovecot Prozesse
useradd –c „Fred Feuerstein“ –d /home/fred –m –g user fred
# User Fred Feuerstein mit #Anmeldenamen „fred“ und dem Homedir #/home/fred wird angelegt. Gleichzeitig #wird er in die Gruppe „user“ gesteckt
passwd fred #So wird ein Passwort für fred erstellt


4.2 Postfix

/etc/postfix/postfix start | Stopp | reload # starten, beenden, neustarten
oder
rcpostfix start | stop | reload # starten, beenden, neustarten
postconf –n # Konfiguration der main.cf auslesen
postalias /etc/aliases # erzeugt DB aus aliases für postfix
tail –f /var/log/mail # zeigt Maillog in „Echtzeit“; machmal #lohnt auch ein blick in die Dateien #mail.err; mail.info, mail.warn, messages
tail –f /var/log/fetchmail #Maillog von fetchmail
postmap /etc/posfix/smtp-auth # Datei smtp-auth wird gehasht
telnet „mailserver“ 25 #SMTP auf dem Server test. Kommandos #und wie er reagieren muss / sollte im #Internet suchen oder wissen
mailq #zeigt pb irgendwelche mail „hängen“
mailq flush #leert die mailq. Geht es nicht erscheint #ein Fehler/Hinweis in /var/log/mail

4.3 Dovecot

/etc/dovecot # startet dovecot
ps –ef | grep Dovecot # zeigt nur Dovecot Prozesse
telnet „servername“ 143 # Dovecot sollte sich „OK dovecot ready“ # melden. Dann tut alles
kill -9 PID_der_Dovecot_Prozesse # so wird er beendet

5. Quellen

Als Quellen dienten vor allem das Postfixbuch, der Linux-Club, und www.framp.de Ansonsten noch viele verschiedene Webseiten auf denen ich die eine oder andere Info gefunden habe. Welche das waren, weiß ich aber nicht mehr. (So ist das mit Google)
Code:
 

stka

Guru
Bitte hier an der Stelle keine Fragen posten!! Alle Fragen zu den Howto in einem neuen Thread stellen, hier angehängte Frage werden ohne Vorwarnung gelöschten. Fehler die hier gefunden werden bitte direkt per PN an montykarlo senden, damit er die Fehler hier selber beheben kann.
 
Status
Für weitere Antworten geschlossen.
Oben