POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER
POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER (Stand 15.11.2013) [ © 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 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 Emailadresse 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_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 smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtpd_sender_restrictions = reject_unknown_sender_domain smtpd_sender_restrictions = reject_unknown_sender_domain smtpd_helo_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_invalid_hostname, reject_unauth_pipelining, reject_non_fqdn_hostname smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_recipient_domain, reject_non_fqdn_recipient, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unauth_destination, reject_unauth_pipelining, reject_rbl_client zen.spamhaus.org, reject_rbl_client ix.dnsbl.manitu.net, reject_rbl_client bl.spamcop.org, permit smtpd_data_restrictions = reject_unauth_pipelining, permit # 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 Emailadresse 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/cacert.crt smtpd_tls_key_file = /usr/share/ssl-cert/URL.key.decrypted smtpd_tls_cert_file = /usr/share/ssl-cert/URL.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 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 wie 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 eine Mailadresse 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
Was hier unbedingt geaendert werden muss ist:
2. Server Settings B. Update SMTP Settings : localhost:25 4. SMTP Server : localhost <<< hier muss die IP vom Server eingetragen werden 7. SMTP Authentication : none <<< auf login stellen
Aussehen sollte es dann etwa so:
SMTP Settings ------------- 4. SMTP Server : 192.168.1.2 5. SMTP Port : 25 6. POP before SMTP : false 7. SMTP Authentication : login (with IMAP username and password) 8. Secure SMTP (TLS) : false 9. Header encryption key :
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.
Des Weiteren kann man auch alles nach https (ssl) umleiten lassen (dazu muss der Apache natuerlich https verstehen), dazu muss man in der datei folgendes aendern:
#<IfModule mod_rewrite.c> # <IfModule mod_ssl.c> # <Location /squirrelmail> # RewriteEngine on # RewriteCond %{HTTPS} !^on$ [NC] # RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L] # </Location> # </IfModule> #</IfModule>
aendern in
<IfModule mod_rewrite.c> <IfModule mod_ssl.c> <Location /squirrelmail> RewriteEngine on RewriteCond %{HTTPS} !^on$ [NC] RewriteRule . https://%{HTTP_HOST}%{REQUEST_URI} [L] </Location> </IfModule> </IfModule>
Danach ein:
/etc/init.d/apache2 restart
OPTIONAL:
FETCHMAIL EINRICHTEN
aptitude install fetchmail
Mit Fetchmail Mails von externen Postfaechern abholen: Fetchmail Daemon aktivieren in /etc/default/fetchmail:
START_DAEMON=no
aendern in
START_DAEMON=yes
/etc/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
Dann Fetchmail Daemon starten:
/etc/init.d/fetchmail restart 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