Hi,
ich schreibe dieses HowTo weil ich bis jetzt nichts im Netz gefunden habe, was alle Bereiche aufgreift und auch funktioniert auf Fedora Core 3. Wenns Probleme gibt bitte eine Nachricht an mich schicken, genauso sind Verbesserungsvorschläge willkommen. Natürlich gibt es tausend Wege die nach Rom führen. Man könnte sich zum Beispiel Procmail sparen, ich habe es aber trotzdem eingesetzt.
EMail Server mit:
Postfix
Fetchmail
Procmail
Cyrus-Imap
Diese Komponenten kommen später dazu:
Amavis-new
Virenscanner
Spamassassin
Webfrontend mit Squirrelmail
Hier der IST-Zustand:
Fedora Core 3
SSH Zugang mit putty und WinSCP
freigeschaltete Ports in der FW:
25 smtp
110 pop3
143 imap
dyndns Adresse mit MX Eintrag auf eigenen Host
bzw. Domain mit der Möglichkeit MX Einträge zu setzen in Verbindung mit dyndns
Hier der Sollzustand:
lokale, interne zu externe, externe zu interne und externe zu externe Mailzustellung
Einsortierung der Mails in eigene Postfächer mit Procmail
Logins verschlüsselt über sasldb2
IMAP Server
Virenscanner
Spamfilterung mit Spamassassin
Weiterleitungen von Mails (z.bsp. root an benutzer)
Mailinglisten
Webmail
zur Zeit verwendete Quellen:
http://www.bieli.de/main/node4.html
http://www.newbie-net.de/anleitung_n....html#procmail
Wenn eine Neuinstallation vorgenommen wird hat sich folgende Dateistruktur bewährt:
/ 500 MB
/usr 2000 MB
/tmp 500 MB
/home 2000 MB
swap 500 MB
/var Rest (ausreichend gross)
1. Zeit einstellen über ntp !!!
2. FQDN Hostname festlegen
etc/hosts:
Code:
127.0.0.1 localhost
127.0.0.1 myhostname.mynetworkid.tld myhostname
/etc/sysconfig/network:
Code:
NETWORKING=yes
HOSTNAME=myhostname.mynetworkid.tld
/etc/sysconfig/network-scripts/ifcfg-eth0:
Code:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
DHCP_HOSTNAME=myhostname.mynetworkid.tld
3. Reboot
4. Überprüfung des Mailservers:
Code:
alternatives --display mta
5.Installieren der benötigten Programmteile:
Code:
yum install postfix fetchmail procmail cyrus-imapd cyrus-imapd-utils cyrus-sasl cyrus-sasl-plain
6. Switchen des Mailservers
Code:
alternatives --config mta
7. Reboot
8. Mailserver testen
Code:
telnet localhost 25
quit
9. /etc/postfix/main.cf und master.cf bearbeiten
main.cf:
Code:
soft_bounce = no
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
default_privs = nobody
# hier kommt der fqdn rein zum bsp. host.user.dyndns.org
myhostname = myhostname.mynetworkid.tld
# hier kommt die domain rein zum bsp. user.dyndns.org
mydomain = mynetworkid.tld
myorigin = $mydomain
inet_interfaces = all
# nach localhost.$mydomain kommt anstelle von mynetworkid.tld user.dyndns.org
mydestination = $mydomain, $myhostname, localhost.$mydomain, mynetworkid.tld
unknown_local_recipient_reject_code = 550
mynetworks_style = host
# hier en richtigen lokalen Netzbereich eintragen
mynetworks = 172.16.0.0/16, 127.0.0.0/8
relay_domains = $mydestination
# hier den relayhost eintragen zum bsp. mx.freenet.de
relayhost = [mx.freenet.de]
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
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.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.1.5/samples
readme_directory = /usr/share/doc/postfix-2.1.5/README_FILES
mailbox_command = /usr/bin/procmail -t -a $EXTENSION
master.cf:
hier habe die Zeilen mit deliver geändert, den Pfad angepasst
Code:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n - n - - smtpd
# -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes -o smtpd_etrn_restrictions=reject
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
#tlsmgr fifo - - n 300 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
#
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# maildrop. See the Postfix MAILDROP_README file for details.
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
old-cyrus unix - n n - - pipe
flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
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=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
10. nach Änderungen in der main.cf/master.cf immer ein postfix reload ausführen
11. Die Datei alias bearbeiten (z.Bsp alle Mails für root an einen Systemuser weiterleiten
/etc/aliases
Code:
# Person who should get root's mail
root: user
12. Das ist erstmal nicht notwendig:
Weiterleitungen für Domains und User in /etc/transport
Code:
#Zustellung von eMail erfolgt normal
#telmecsa.com local:
#Weiterleitung auf anderen Mailserver
#teletext.de smpt:mail.example2.de
14. Postfix neu starten
Code:
/etc/init.d/postfix restart
15. Cyrus SASL konfigurieren
/etc/sysconfig/saslauthd:
mech=shadow ersetzen mit mech=pam
16. saslauthd starten
Code:
/sbin/service saslauthd start
saslauthd beim Systemstart immer starten:
Code:
/sbin/chkconfig saslauthd on
runlevel testen:
Code:
chkconfig --list saslauthd
16.Cyrus-Imap starten
Code:
/sbin/service cyrus-imapd start
Cyrus-Imap beim Systemstart immer starten:
Code:
/sbin/chkconfig cyrus-imapd on
runlevel testen:
Code:
/sbin/chkconfig --list cyrus-imapd
17. testen mit imtest
(systemuser muss vorher angelegt sein)
Code:
imtest -a user -u user localhost
Passwort für cyrus setzen:
mit cyradm einloggen:
Code:
cyradm --user cyrus localhost
18.Mailbox anlegen
Code:
createmailbox user.systemuser
user bleibt stehen und mit systemuser ist Euer User gemeint, den Ihr angelegt habt und für den Ihr eine Mailbox erstellen wollt.
19. Einsortierung der Mails in die Postfächer
procmailrc für die einzelnen user anlegen:
Code:
touch /home/userverzeichnis/.procmailrc
chmod 644 /home/userverzeichnis/.procmailrc
unter /var/log/ eine datei procmail anlegen für den log und Rechte setzen:
Code:
touch /var/log/procmail
chmod 777 /var/log/procmail
in die jeweilige .procmailrc folgendes reinschreiben:
Code:
# Verbose on = ausführliches Log
#
VERBOSE=on
LOGFILE=/var/log/procmail
# deliver sortiert die Mails in die Cyrus-Mailboxen ein
#
DELIVERMAIL="/usr/lib/cyrus-imapd/deliver"
# Kurznamen" fuer einige Zustellbefehle
#
IMAP="$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME"
# Zustellung in die INBOX des Users:
#
:0 w
| /bin/sed 1d | $IMAP
20. Rechte von deliver verändern und sticky bit setzen
Code:
chmod 4777 /usr/lib/cyrus-imapd/deliver
deliver einem anderen user/gruppe zuordnen:
Code:
chgrp mail /usr/lib/cyrus-imapd/deliver
chown cyrus /usr/lib/cyrus-imapd/deliver
nun noch mal zur Überprüfung:
[root@base ~]# ls -al /var/lib/imap/socket/lmtp
srwxrwxrwx 1 root root 0 16. Okt 10:52 /var/lib/imap/socket/lmtp
[root@base ~]# ls -al /usr/lib/cyrus-imapd/deliver
-rwsrwxrwx 1 cyrus mail 851764 5. Apr 2005 /usr/lib/cyrus-imapd/deliver
wenns Probleme gibt bitte das hier checken und eventuell den Parameter -a in der cyrus.conf angeben.
in postfix (main.cf):
mailbox_transport = lmtp:unix:/pfad/zu/imap/socket
in cyrus (cyrus.conf):
lmtpunix cmd="lmtpd -a" listen="/pfad/zu/imap/socket" prefork=0
der parameter '-a' schaltet die authentifizierung ab, deshalb auf die filepermissions für den socket achten. prefork muss evtl. auch angepasst werden.
21.zur sicherheit alles nochmal neu starten:
Code:
postfix restart
/sbin/service cyrus-imapd restart
22. jetzt lokale mailzustellung testen:
als user einloggen:
Code:
mail root
irgendwas
irgendwas
.
return taste
return taste
23. z.Bsp. Outlook Express an Eurer entfernten Windows Kiste einrichten
als Namen bzw. Adresse nehmt ihr den User, für den ihr vorhin in Cyrus eine Mailbox angelegt habt:
Adresse währe dann user@user.dyndns.org
Unter Imap Server Eure dyndns Adresse eintragen
unter smtp Adresse genauso Eure dyndns Adresse eintragen
Jetzt einen Versuch wagen indem ihr eurer Konto abruft. Iihr müsstest jetzt, da ja "root" Mails auf den User weitergeleitet werden, die erste Mail empfangen.
24. mit fetchmail mails von externen postfächern abholen, wenn gewünscht
fetchmailrc anlegen und in root verzeichnis packen:
Code:
touch /root/.fetchmailrc
fetchmailrc mit folgendem Inhalt editieren, um Mails von gmx abzuholen:
systemuser steht für den user für den ihr eine mailbox angelegt habt und der auf dem system geaddet ist
Code:
poll pop.gmx.net proto pop3 user username@gmx.net with pass geheim is systemuser here
fetchmail als Daemon einrichte, der jede Minute Mails abruft:
25. Mail versand von intern nach extern einrichten
als mailrelay wird freenet genommen mit smtp auth
zuerst bei freenet mail addy besorgen
dann datei anlegen und ins postfix dir packen
Code:
touch /etc/postfix/sasl_passwd
Datei nur für root lesbar machen:
Code:
chown root:root /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
Dtei mit folgenden Inhalt erstellen:
Code:
mx.freenet.de user@freenet.de:passwort
Datenbank erstellen:
Code:
postmap hash:/etc/postfix/sasl_passwd
jetzt die main.cf editieren und folgende Zeilen ergänzen:
Code:
# SASL Unterstützung für relayhost zum Versenden der Mails
smtp_sasl_auth_enable = yes
# Pfad angeben zur Datei mit den Daten für den relayhost
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
Postfix conf neu einlesen:
Mail von intern nach extern senden:
Code:
mail deine externe mail addy
bla
bla
.
return taste
Mail von deiner Windows Kiste von deiner externen mail addye abrufen.
26. Mail Versand von extern einrichten zunächst der Einfachhalthalber über saslauth. Das Ganze nennt man auch SMTP-Auth-einrichten, da ja sonst jeder über Euren Mailserver therotisch eine Email schicken kann, ohne sich zu authentifizieren
Zuerst die main.cf um folgende Zeilen ergänzen:
Code:
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, check_relay_domains
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
dann:
jetzt die sasldb2 mit unserem User füttern, für den wir ja vorhin die Mailbox angelegt haben:
Code:
saslpasswd2 -c user
Der Benutzer wird mit dem Realm angelegt, der so heisst wie Euer FQDN ( Hostname mit Domain). Jetzt solltet Ihr Euch aber im klaren sein, daß die Passwörter in PLAINTEXT übetragen werden, also jederzeit mitgelesen werden können, falls einer Euer Netzwerk snifft. Wie das ganze verschlüsselt geht kommt demnächst.
Bitte zum testen Euren Email Clienten mit dem Servernamen, dem Benutzer und dem Passwort füttern, daß Ihr über die Sasldb2 angelegt habt. Jetzt könnt Ihr eine Mail schreiben von Eurem Server am besten mit Putty und Sie extern von Eurer Windows Kiste abrufen und Sie auch gleich beantworten.
Der Rest kommt später ......
cya
Lesezeichen