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