POSTFIX, COURIER UND SPAMASSASSIN FAQ INKL. SQUIRREL WEBMAIL AUF EINEM HOMESERVER

Aus OPPServer.net Wiki | OPPs Wiki
Zur Navigation springen Zur Suche springen

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