POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER (Stand 25.06.2011)
[ © Oliver Schuetz aka OppTupacShakur | http://OPPServer.ath.cx | http://unix.oppserver.net ]
als root per ssh einlogen und folgende aktionen immer als root ausfuehren
aptitude install postfix postfix-tls maildrop spamassassin spamc razor pyzor libsasl2 libsasl2-2 libsasl2-modules sasl2-bin openssl courier-base courier-ssl courier-pop courier-pop-ssl courier-imap courier-imap-ssl squirrelmail squirrelmail-decode squirrelmail-locales
POSTFIX EINRICHTEN (OHNE CACERT, zb zum einrichten einer mailadresse fuer cacert.org)
/etc/postfix/main.cf bearbeiten, meine sieht wie folgt aus, smtp server ist hier mx.freenet.de als beispiel, dort am besten einen smtp und auch eine email adresse des eigenen dsl providers (funktioniert auch bei einem root server) nehmen.
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
delay_warning_time = 4h
# TLS parameters
smtp_tls_key_file = /usr/share/ssl-cert/ssl-cert-snakeoil.key
smtp_tls_cert_file = /usr/share/ssl-cert/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtpd_recipient_restrictions = reject_non_fqdn_sender,reject_non_fqdn_recipient,permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_unauth_pipelining
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_use_tls = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain,login,cram-md5
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sender_restrictions = reject_unknown_sender_domain
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# hier kommt der fqdn rein zum bsp. mail.opp.dyndns.org
myhostname = mail.opp.dyndns.org
# hier kommt die domain rein zum bsp. opp.dyndns.org
mydomain = opp.dyndns.org
myorigin = $mydomain
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost
disable_dns_lookups = no
relay_domains = $mydestination
# hier den relayhost eintragen zum bsp. mx.freenet.de
relayhost = mx.freenet.de
# hier en richtigen lokalen Netzbereich eintragen
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mynetworks_style = host
mailbox_command = maildrop
mailbox_size_limit = 0
message_size_limit = 10485760
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_alias_domains = hash:/etc/postfix/virtual
# Verwende das Maildir-Format
home_mailbox = Maildir/
Die Datei /etc/aliases bearbeiten ,z.B. alle Mails fuer root an einen Systemuser weiterleiten, meine sieht wuie folgt aus.
# /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
root: opp
danach einmal
newaliases
POSTFIX EINRICHTEN (MIT CACERT)
als erstes wie hier http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq
beschrieben ein ssl cert erstellen
/etc/postfix/main.cf bearbeiten, meine sieht wie folgt aus, smtp server ist hier mx.freenet.de als beispiel, dort am besten einen smtp und auch eine email adresse des eigenen dsl providers (funktioniert auch bei einem root server) nehmen.
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
delay_warning_time = 4h
# TLS parameters
smtp_tls_key_file = /usr/share/ssl-cert/URL.key.decrypted
smtp_tls_cert_file = /usr/share/ssl-cert/URL.crt
smtp_tls_CAfile = /usr/share/ssl-cert/URL.crt
smtpd_tls_key_file = /usr/share/ssl-cert/URL.key.decrypted
smtpd_tls_cert_file = /usr/share/ssl-cert/URL.crt
smtpd_tls_CAFile = /usr/share/ssl-cert/cacert.crt
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtpd_recipient_restrictions = reject_non_fqdn_sender,reject_non_fqdn_recipient,permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_unauth_pipelining
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_sender_dependent_authentication = yes
smtp_sasl_auth_enable = yes
smtp_use_tls = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain,login,cram-md5
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtpd_sender_restrictions = reject_unknown_sender_domain
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
# hier kommt der fqdn rein zum bsp. mail.opp.dyndns.org
myhostname = mail.opp.dyndns.org
# hier kommt die domain rein zum bsp. opp.dyndns.org
mydomain = opp.dyndns.org
myorigin = $mydomain
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost
disable_dns_lookups = no
relay_domains = $mydestination
# hier den relayhost eintragen zum bsp. mx.freenet.de
relayhost = mx.freenet.de
# hier en richtigen lokalen Netzbereich eintragen
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mynetworks_style = host
mailbox_command = maildrop
mailbox_size_limit = 0
message_size_limit = 10485760
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
virtual_alias_maps = hash:/etc/postfix/virtual
virtual_alias_domains = hash:/etc/postfix/virtual
# Verwende das Maildir-Format
home_mailbox = Maildir/
Die Datei /etc/aliases bearbeiten ,z.B. alle Mails fuer root an einen Systemuser weiterleiten, meine sieht wuie folgt aus.
# /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
root: opp
danach einmal
newaliases
SASL EINRICHTEN
Als erstes muessen wir SASL "aktvieren", da es nach der Installation standardmaessig deaktiviert ist. Dazu oeffnen wir die Datei /etc/default/saslauthd mit einem beliebigen Editor.
Die Zeile
START=no
muss in
START=yes
geaendert werden.
Anschliessend sollte die Zeile
OPTIONS="-c"
in
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
geaendert werden. Dies ist noetig, da Postfix in einem Chroot-Kaefig laeuft und auf den Standardsocket von SASL nicht zugreifen kann!
Im Chroot-Kaefig von Postfix fehlen ein paar Ordner, diese koennen wir von dpkg erzeugen lassen:
dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
Nun fuegen wir noch Postfix zur Gruppe Sasl hinzu, damit ersteres auch auf letzteres zugreifen kann
adduser postfix sasl
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
touch /etc/postfix/sasl_passwd
dann in diese datei folgendes eintragen
mx.freenet.de user@freenet.de:passwort
Datenbank erstellen:
postmap hash:/etc/postfix/sasl_passwd
Jetzt muessen wir Postfix noch kurz beibringen, wie es auf SASL zur Authentifizierung zugreifen kann.
Dazu legen wir die Datei /etc/postfix/sasl/smtpd.conf (touch /etc/postfix/sasl/smtpd.conf) mit folgendem Inhalt an:
pwcheck_method: saslauthd
mech_list: digest-md5 cram-md5 login plain
autotransition:true
saslauthd_path: /var/run/saslauthd/mux
pwcheck_method: saslauthd
Anschliessend kann der saslauthd gestartet werden:
/etc/init.d/saslauthd start
SPAMASSASSIN EINRICHTEN
Als erstes aktivieren wir Spamassassin, da auch dieses bei der Standardinstallation deaktviert ist. Dazu bearbeiten wir die Datei /etc/default/spamassassin mit einem beliebigen Texteditor.
aendern sie die Zeile
ENABLED=0
in
ENABLED=1
und starten sie Spamassassin anschliessend:
/etc/init.d/spamassassin start
Ich werde hier nicht sehr detailliert auf die Konfiguration von Spamassassin eingehen, da dies den Rahmen dieses Howtos erheblich sprengen wuerde.
Erstellen vom Razor Account
rm /etc/razor/razor-agent.conf
razor-admin -create
razor-admin -create
razor-admin -register
Wenn beim Erstellen des Kontos Fehler auftreten, ist es eventuell notwendig es mehrfach zu versuchen, da der Server eventuell ausgelastet ist.
Anschliessend editieren wir /root/.razor/razor-agent.conf wieder mit einem Texteditor und setzen den Debuglevel auf Null.
nun bearbeiten wir die Konfigurationsdatei von Spamassassin (/etc/spamassassin/local.cf) mit einem Texteditor.
Haengen Sie die folgenden Zeilen an die Datei an:
# Verwende Razor
use_razor2 1
# Verwende Pyzor
use_pyzor 1
# Verwende DCC
use_dcc 1
# Verwende Bayes Filter
use_bayes 1
use_bayes_rules 1
bayes_auto_learn 1
# Ab diesem Score wird eine Mail als SPAM markiert
required_score 5.0
Mit dem letzten Parameter werden sie vermutlich ein wenig rumspielen wollen, da die Einstufung ob eine Mail Spam ist oder nicht, von ihnen und nicht von mir abhaengt.
Anschliessend muss Spamassassin noch neugestartet werden:
/etc/init.d/spamassassin restart
MAILDROP EINRICHTEN
nun bearbeiten wir die Konfigurationsdatei von maildrop /etc/maildroprc
aendern sie die Zeile
#DEFAULT="$HOME/Maildir"
in
DEFAULT="$HOME/Maildir"
Postfix neu laden
postfix reload
COURIER POP3-SSL EINRICHTEN (OHNE CACERT, zb zum einrichten einer mailadresse fuer cacert.org)
als naechstes wird courier-pop3 ssl beigebracht. dazu wird die datei pop3d.cnf bearbeitet:
RANDFILE = /usr/lib/courier/pop3d.rand
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
C=DE
ST=BUNDESLAND
L=STADT
O=IRGENDWAS
OU=IRGENDWAS
CN=domain.tld
altes zertifikat loeschen:
rm /etc/courier/pop3d.pem
jetzt ist es zeit ein zertifikat zu erstellen:
mkpop3dcert
courier nun neu starten mit:
/etc/init.d/courier-pop-ssl restart
/etc/init.d/courier-pop restart
COURIER POP3-SSL EINRICHTEN (MIT CACERT)
nun noch in der /etc/courier/pop3d-ssl den pfad zur in
http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq erstellten PEM datei verweisen:
TLS_CERTFILE=/usr/share/ssl-cert/URL.pem
/etc/init.d/courier-pop-ssl restart
/etc/init.d/courier-pop restart
COURIER IMAP-SSL EINRICHTEN (OHNE CACERT, zb zum einrichten einer mailadresse fuer cacert.org)
als naechstes wird courier-imap ssl beigebracht. dazu wird die datei imapd.cnf bearbeitet:
RANDFILE = /usr/lib/courier/imapd.rand
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
C=DE
ST=BUNDESLAND
L=STADT
O=IRGENDWAS
OU=IRGENDWAS
CN=domain.tld
altes zertifikat loeschen:
rm /etc/courier/imapd.pem
jetzt ist es zeit ein zertifikat zu erstellen:
mkimapdcert
jetzt kann courier-imap-ssl neu gestartet werden:
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-imap restart
COURIER IMAP-SSL EINRICHTEN (MIT CACERT)
in der /etc/courier/imapd-ssl den pfad zur in
http://unix.oppserver.net/debian/debian_openssl_installieren_und_certs_erstellen_faq erstellten PEM datei verweisen:
TLS_CERTFILE=/usr/share/ssl-cert/URL.pem
TLS_TRUSTCERTS=/usr/share/ssl-cert/URL.crt
TLS_VERIFYPEER=NONE
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-imap restart
SQUIRRELMAIL EINRICHTEN
mit
/usr/sbin/squirrelmail-configure
konfigurieren wir erstmal squirrelmail nach eigenen wuenschen
wichtiges finde ich zb
1. Organization Preferences
1. Organization Name
4. Organization Title
7. Provider link
8. Provider name
10. Languages
1. Default Language : <<< aendern in de_DE
s fuer speichern nicht vergessen danach q zum verlassen
um squirrelmail zu aktivieren, muessen wir einen symlink setzen
ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d
nach einem restart von apache2 ist squirrelmail sofort verfuegbar
/etc/init.d/apache2 restart
squirrelmail ist nun einsatzbereit und unter
http://URL/squirrelmail
verfuegbar.
natuerlich kann man sich auch einen vhost im apache erstellen (z.B. http://webmail.URL/), dieser sollte
dann nach /usr/share/squirrelmail linken
desweiteren kann man auch alles nach https (ssl) umleiten lassen (dazu muss der apache natuerlich https verstehen)
dazu muss man in der datei folgendes aendern
#
#
#
# RewriteEngine on
# RewriteCond %{HTTPS} !^on$ [NC]
# RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]
#
#
#
aendern in
RewriteEngine on
RewriteCond %{HTTPS} !^on$ [NC]
RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L]
danach ein
/etc/init.d/apache2 restart
OPTIONAL:
FETCHMAIL EINRICHTEN
aptitude install fetchmail
mit fetchmail mails von externen postfaechern abholen, wenn gewuenscht
fetchmailrc anlegen und in root verzeichnis packen:
touch /root/.fetchmailrc
fetchmailrc mit folgendem Inhalt editieren, um Mails von gmx abzuholen:
systemuser steht fuer den user fuer den ihr eine mailbox angelegt habt und der auf dem system geaddet ist
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:
fetchmail -d 60
postfix reload
VIRTUAL ALIAS
Virtual alias anlegen, falls man z.B. noch eine 2 oder noch weiterere domains adden moechte.
touch /etc/postfix/virtual
die datei mit folgendem inhalt fuellen, wobei ersteres die abzufragende emailadresse ist und systemuser steht fuer den user fuer den ihr eine mailbox angelegt habt und der auf dem system geaddet ist
maildirmake /home/sytemuser/Maildir
chown -R systemuser:mail /home/sytemuser/Maildir
email@andere.dyndns.org systemuser
Datenbank erstellen:
postmap /etc/postfix/virtual
postfix reload