Debian 5.x Lenny und 6.x Squeeze und 7.x Wheezy Webmail

Debian 5.x Lenny wird nicht mehr supportet, keine Updates etc.. bitte lehnen Sie sich an die Debian 6.x Squeeze Anleitung.Oder die 7.x Anleitung für Wheezy

Inhalt

1. Vorwort

email-comic.gif

1.1. Debian

Angenommen ist ein Debian Squeeze oder Lenny System als Standard installiert. Dies ist ein Weg wie man möglichst schnell an ein Webmail kommt auf einem Server.Ein Email Server kann man eigentlich nur auf einer statischen IP aufsetzen, und die Domain offizielle registriert ist. (Schickt doch mal eine Email an hotmail von einer DHCP Adresse aus. B) Da wird man gleich in eine Spam Liste eingetragen. Aber wir machen das besser...wir intressieren uns nicht dafür, wir lassen solch eine email Anfrage einfach abblitzen. ok ;) (Info: abblitzen lassen wir so ein DHCP-Email Server in 10.1 UCE))

Falls dieses Doku auf einem bestehenden System angewendet wird, müsst ihr zuerst alle aufgeführten aptitude install Pakete* gegen ein aptitude purge Pakete* ersetzen, weg mit dem alten. Dann müsst ihr deluser für sshd , mysql , postfix , clamav , postgrey , amavix machen. Dann müsst Ihr delgroup mysql , ssl-cert , postfix , postdrop , clamav , postgrey , amavis machen. Damit ihr halbwegs auf ein jungfräuliches System kommt. Sonst gibt es ärger beim installen dieser Anleitung. (Ich würde es aber einfach nur auf einem neuen System gleich nur so installen)

Ich installiere alle möglichen Hilfstools, also damit kriegt man/ihr alle Spams weg, aber nur schon bei normal Anwendung dieser Anleitung habt ihr sehr viel Frieden. Peace for the World. Und es lohnt sich alle MS gegen Debian auszutauschen. :)

2. Vorwort zur Sicherheit

Es darf nix geben wo man sich einlogen kann, was über plain text geht. Einfach nix, um die Sicherheit des Server zu schützen! Und dann sind wir an der Marke, wo ihr auch mal mitdenken müsst. ;) Wenn Ihr das nicht tut, bist du auf der falschen Anleitung!

z.B: was wir machen können, ist jedes Passwort über SSH oder https laufenzulausen (ähnliches für Emails dann...) , aber wenn wir mit Windows draufgehn, kann es sein das ein Keylogger in Windows Betriebssystem (Tastatur Verfolger) aufnimmt was wir als Passwort eintippen und gleichzeitig schon an den Beobachter übermittelt wurde. Dafür kann diese Anleitung nichts. (das ist Tehnologie, alles ist irgendwann hackbar...., vorallem Windows täglich)

..cya

3. Vorwort zu Filesystemen

Also wenn ihr grad ein neues System aufsetzt, aufkeinefall ext3, nene du, nimm reiserfs oder ext4, aber auf keinen Fall mehr ext3! Habt ihr das verstanden?

4. Grundsätzlich root

Für die Anleitung muss man root (Chef sein) vom Debian, und in das Root Home-Verzeichniss wechseln.

Root werden:
su Enter  Root Passwort Enter
cd Enter

5. Grundlegend

Arbeite ich mit vim, dieser muss noch etwas nachgeladen werden. Nano und MC wird noch installiert, für weniger gewohnte vi user.

Openssh-server wird installiert, ein ftp server wird nicht mehr benötigt, wir machen nur noch SFTP ab jetzt.

apt-get install vim vim-nox openssh-server ssh nano mc aptitude

Ab jetzt funktioniert: winscp, ssh, putty, gftp (auf SSH2). Es wird kein ftpd benötigt!! Ich habe mir ein Lesezeichen in Gnome/Nautilus (Explorer) von meinem Server angelegt. Ab jetzt könnt ihr Daten rumschieben! Es geht ja!

6. sources.list

Der Virenscanner ClamAV sollte immer auf dem neusten Stand sein. Darum diese SoftwareQuelle einbauen.

echo 'deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free' >> /etc/apt/sources.list

..oder http://debgen.simplylinux.ch/

/!\ Debian 6.x Squeeze und 7.x Wheezy Benützer

In Debian Squeeze und Wheezy ist ClamAV bereits drin, muss man nichts machen.

7. hostname und hosts

/!\ Die sollten wirklich stimmen. Weil dann stimmen die Domain auch in den installierten Configs automatisch.

Die Dateien /etc/hosts und /etc/hostname muss man anpassen richtige Domain! Das ist sehr wichtig, das hier richtige Domains eingegeben werden. Und 127.0.0.1 ist nur localhost!

/etc/hosts

127.0.0.1       localhost
000.000.000.000 my.example.org   (000... wäre deine statische IP)
...

/etc/hostname

my.example.org

/!\ Kontrolle über hostname und hostname -f , ergeben das gleiche.

Bsp. my.example.org

8. Updates & Locales

aptitude update
aptitude upgrade

dpkg-reconfigure locales

/!\ de_DE.ISO-8859-1 muss angewählt werden, andere darf man, und Standard darf auch was anderes sein. Für Squirrelmail deutsch

9. Die Skel füllen / Ordner erstellen

Grundsätzlich zu Skel /etc/skel, das ist ein Ordner, dessen Inhalt, beim neu anlegen eines Linuxuser, diesem in sein Home Ordner rüberkopiert wird. Und dann noch ein paar Hilfsordner. Ich kann ja nix für. Das ist Linux.

Mail Ordner wird aus Kompatibilitätsgründen zu mutt erstellt, wir erstellen später ein mutt-imap Befehl für die Konsole, damit man an die gleichen Mail kommt wie im Webmail.

Dem vim grundsätzlich Highlighting beibringen

echo ':syntax on' > .vimrc
cp .vimrc /etc/skel

root, für root sich selber

mkdir -p /root/Maildir/{cur,new,tmp}
mkdir -p /root/Mail
mkdir -p /root/virusmails

root, für neue User

mkdir -p /etc/skel/Maildir/{cur,new,tmp}
mkdir -p /etc/skel/Mail
mkdir -p /etc/skel/virusmails
mkdir -p /etc/skel/public_html
mkdir -p /etc/skel/htpasswd

root für bestehende User:

for homedir in /home/* ; do user=$(basename $homedir) ; maildir=$homedir/Maildir ; mkdir -p $maildir ; for sub in cur new tmp ; do mkdir $maildir/$sub ; done ; chown -R $user:$user $maildir ; done

for homedir in /home/* ; do user=$(basename $homedir) ; maildir=$homedir/Mail ; mkdir -p $maildir ; chown -R $user:$user $maildir ; done

for homedir in /home/* ; do user=$(basename $homedir) ; public_html=$homedir/public_html ; mkdir -p $public_html ; chown -R $user:$user $public_html ; done

for homedir in /home/* ; do user=$(basename $homedir) ; virusmails=$homedir/virusmails ; mkdir -p $virusmails;  chown $user:$user $virusmails ; done

Damit User auch in der Konsole auf die richtigen Ordner kommen von ihrem Email.

Befehl bauen für die Console Email Zugriff:

mutt-imap

echo 'mutt -f imap://localhost/' > /usr/local/bin/mutt-imap; chmod +x /usr/local/bin/mutt-imap; chown root.users /usr/local/bin/mutt-imap

/!\ an dieser Stelle empfhele ich nochmals ein Reboot des Systems zu machen, wegen hostname und hostname -f test. Ab jetzt muss es einfach stimmen.

10. Postfix, Courier, Saslauthd, MySQL, rkhunter, binutils,mutt

aptitude install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 binutils mutt telnet rkhunter

folgende Fragen so beantworten

MySQL Passwort angeben [zweimal eingeben Enter]

WWW NEIN

Internet-Sites

Domain angeben (z.b. my.example.org)

dann...

/!\ Edit /etc/default/saslauthd and set START=yes

/etc/init.d/saslauthd restart

...dann erlauben wir smtp auch auf Port 587 (submission) zu horchen. Edit /etc/postfix/master.cf

#submission inet n       -       -       -       -       smtpd

umschreiben auf...

submission inet n       -       -       -       -       smtpd

das # Gitter weg.

Und dann noch, postfix mal auf das richtige Maildir schicken...

postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart

...dann müssen wir rkhunter (RootKit Sucher) noch einmal laufen lassen. Dann werden die Hush ermittelt der Programme die installiert sind. Nur auf einem neuen System einmal ausführen diesen Befehl.

rkhunter --propupd --update

10.1. Unsolicited Commercial Email

Auch bekannt als Spam

Damit Postfix nicht einfach alles annimmt, aus unbekannten Quellen. Hier muss sollte sich jeder selber einlesen in Postfix. Es wird einfach einmal ein Minimum eingestellt. Thema: UCE (Unsolicited Commercial Email), ist eigentlich ein Spam Filter, bei der SMTP Authentifizierung. Solche Emails werden gar nicht entgegengenommen. Sodass Amavis oder Spamassassin diese nicht bearbeiten müssen (ContentFilter , wird in Punkt 11 beschrieben). Was etwas die Resourcen unseres Servers schont.

Copy&Paste Sie einfach alles in eine root Console von hier.

/!\ Wichtig ist, dass Sie im Test mit einem DHCP Adresse Mail-Server gegen den fixen IP Server im Selbsttest eine email versuchen abzusetzen, diese darf nicht angenommen werden, darf nicht!

echo '

#Unsolicited Commercial Email
smtpd_helo_required = yes
smtpd_helo_restrictions =
smtpd_sender_restrictions =
smtpd_recipient_restrictions =
            reject_invalid_hostname,
            reject_non_fqdn_hostname,
            reject_non_fqdn_sender,
            reject_non_fqdn_recipient,
            reject_unknown_sender_domain,
            reject_unknown_recipient_domain,
            permit_mynetworks,
            reject_unauth_destination,
            #check_recipient_access pcre:/etc/postfix/recipient_checks.pcre,
            #check_helo_access dbm:/etc/postfix/helo_checks,
            #check_sender_access dbm:/etc/postfix/sender_checks,
            #check_client_access dbm:/etc/postfix/client_checks,
            #check_client_access pcre:/etc/postfix/client_checks.pcre,
            #reject_rbl_client cbl.abuseat.org,
            #reject_rbl_client sbl.spamhaus.org,
            #reject_rbl_client pbl.spamhaus.org
            permit

        smtpd_data_restrictions =
            reject_unauth_pipelining,
            permit

' >> /etc/postfix/main.cf
/etc/init.d/postfix restart

10.2. Postfix/Courier/Pop Schlüssel

Ich hab mich durchgerungen das doch auch zu erklären, obwohl es nicht wirklich viel mehr Sicherheit ist. Weil es geht auch ohne TLS zwischen den Servern, das ist ein vermeindlicher Glauben es ist dann wirklich verschlüsselt.

MTA (Server verschlüsselt mit TLS) -> MTA (nächster Server, ohne TLS, empfängt) , so wo ist ihre verschlüsselte Email?

Und ich sag es zum letzten mal, es gibt Admins die TLS mit VPN verwechseln!

Es ist so, nur weil Sie zu mir, meinem oder Ihrem aufgebauten Email Server TLS machen, ist es nicht gewährleistet, dass diese auch mit TLS weitertransportiert werden muss.

Und die Person, die uns was schickt ist nicht zertifiziert. Da sind wir meilenweit entfernt. Für mich funktioniert TLS noch nicht richtig in der Anwendung, und auch die Personenidentifikation ist bei Null. Naja egal, dann machen wir es halt hier mal:

(Aber ist eigentlich eine Frechheit von TLS zu reden, sie sollten sagen, TLSP P=bis Provider, und für was hab ich graue Haare am Sack!)

10.2.1. Postfix mit SMTP-AUTH und TLS

..dann Copy&Paste alles

postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'


echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

Jetzt werden die Zertifikate erstellt, führen Sie die Befehle so aus, wie ich sie gruppiert habe. (Copy&Paste)

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr

...gefolgt von - Die Schlüssel sind dann 10jahre gültig (-days 3650)

openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

openssl rsa -in smtpd.key -out smtpd.key.unencrypted

mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

saslauthd noch anpassen, auch in eine chroot umgebung schicken im run

cd
mkdir -p /var/spool/postfix/var/run/saslauthd

Edit /etc/default/saslauthd

#ist zuoberst in der Datei

# Should saslauthd run automatically on startup? (default: no)
START=yes


#ist zuunterst in der Datei, einen alten Eintrag ausschalten mit #

# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
#OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

dann noch postfix zu der Gruppe sasl hinzufügen und neustarten der Dienste.

adduser postfix sasl
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart

Der Test geht mit Telnet.

telnet localhost 25

dann tipp ein:
ehlo localhost

dann sollte es so aussehen:
server1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1…
Connected to localhost.
Escape character is ‘^]’.
220 server1.example.com ESMTP Postfix (Debian/GNU)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

dann ist alles in Ordnung, tippe quit ein Enter.
quit
221 2.0.0 Bye
Connection closed by foreign host.
server1:/etc/postfix/ssl#

10.2.2. Courier-IMAP/Courier-POP3

die falschen Schlüssel mal löschen

cd /etc/courier
rm -f /etc/courier/imapd.pem
rm -f /etc/courier/pop3d.pem

Edit /etc/courier/imapd.cnf und danach Edit /etc/courier/pop3d.cnf ( /!\ zwei Dateien sind zu editieren, sie sehen nur gleich aus)

#von....

[ req_dn ]
C=US
ST=NY
L=New York
O=Courier Mail Server
OU=Automatically-generated IMAP SSL key
CN=localhost
emailAddress=postmaster@example.com

#auf das ändern...
#die in Klammer geschriebenen Erklärungen natürlich nicht mitnehmen!

[ req_dn ]
C=DE  (dein land)
ST=BR  (dein Bundesland)
L=München  (deine Stadt)
O=Courier Mail Server
OU=Manually-generated IMAP SSL key
CN=deineDomain.org   (dein Server Name)
emailAddress=admin@deineDomain.org (administrator Email Adresse)

...dann werden die Schlüssel generiert und die Dienste neu gestartet.

mkimapdcert
mkpop3dcert
/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop-ssl restart
cd

11. Amavisd-new, SpamAssassin, Clamav, Postgrey

Anmerkung: Postgrey lehnt zuerst die Emails immer zweimal ab, erst beim dritten Versuch, wird es die Email annehmen. Das ist ein mechanischer Spam Schutz, führt aber etwas zu Verzögerungen. Wer das nicht will, installiert es einfach nicht.

aptitude install amavisd-new spamassassin clamav clamav-daemon zoo ripole unzip bzip2 arj nomarch lzop cabextract zip unzip rar unrar unace p7zip-rar lha apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl pyzor razor postgrey

11.1. Amavis anpassen

Edit /etc/amavis/conf.d/15-content_filter_mode

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);


@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Copy&Paste Sie einfach alles in eine root Console von hier.

echo '


smtp-amavis     unix    -       -       -       -       2       smtp
        -o smtp_data_done_timeout=1200
        -o smtp_send_xforward_command=yes
        -o disable_dns_lookups=yes
        -o max_use=20

127.0.0.1:10025 inet    n       -       -       -       -       smtpd
        -o content_filter=
        -o local_recipient_maps=
        -o relay_recipient_maps=
        -o smtpd_restriction_classes=
        -o smtpd_delay_reject=no
        -o smtpd_client_restrictions=permit_mynetworks,reject
        -o smtpd_helo_restrictions=
        -o smtpd_sender_restrictions=
        -o smtpd_recipient_restrictions=permit_mynetworks,reject
        -o smtpd_data_restrictions=reject_unauth_pipelining
        -o smtpd_end_of_data_restrictions=
        -o mynetworks=127.0.0.0/8
        -o smtpd_error_sleep_time=0
        -o smtpd_soft_error_limit=1001
        -o smtpd_hard_error_limit=1000
        -o smtpd_client_connection_count_limit=0
        -o smtpd_client_connection_rate_limit=0
        -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
' >> /etc/postfix/master.cf

Clamav zur Gruppe amavis hizufügen

adduser clamav amavis

Postfix Email umleiten an amavis

postconf -e 'content_filter = smtp-amavis:[127.0.0.1]:10024'
postconf -e 'receive_override_options=no_address_mappings'

Neustart der Dienste ist etwas weiter unten dann.

11.2. Spamassassin Spamfilterung

Hier muss nichts eingestellt werden. Amavis ruft es aber auf. Wer doch etwas machen will, muss sich einlesen. Eine Möglichkeit wäre: Edit /etc/spamassassin/local.cf

#   Use Bayesian classifier (default: 1)
#
use_bayes 1

#   Bayesian classifier auto-learning (default: 1)
#
bayes_auto_learn 1


#pyzor
use_pyzor 1
pyzor_path /usr/bin/pyzor
pyzor_add_header 1

#razor
use_razor2 1
razor_config /etc/razor/razor-agent.conf

/!\ Debian 6.x Squeeze und 7.x Wheezy Benützer

Debian Squeeze und Wheezy Benützer müssen noch folgendes machen:
Edit  /etc/default/spamassassin  und Enable=1 setzen

11.3. Abschliessen mit Neustart der Dienste

/etc/init.d/clamav-daemon restart
/etc/init.d/spamassassin restart
/etc/init.d/amavis restart
/etc/init.d/postfix restart

12. Apache2, PHP5, FCGI, suExec, Pear, mcrypt

12.1. Apache

aptitude install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-curl php5-sqlite php5-imap  php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp

Optional: aptitude install phpmyadmin (damit man grafisch den MySQL Datenbankserver bedienen kann /!\ jedoch wie in Tipp beschrieben, über https schicken!,)

a2enmod suexec rewrite ssl actions include userdir
a2ensite default-ssl
/etc/init.d/apache2 restart

/!\ Wheezy Benützer müssen noch a2dismod suphp machen, damit später squirrel oder phpmyadmin funktioniert, ausser ihr konfiguriert suphp dahin in apache2, dass es vhost nicht kontrolliert. Aktivieren mit "service apache2 restart".

/!\ Ich bin gerade über eine Squeeze Version gestolpert die ich updatete, da passiert dassselbe, suphp ist zu modern. a2dismod suphp und apache2 restarten damit webmail/phpmyadmin dann tut wieder. Ihr müsst euch halt da einlesen in die suphp Geschichte ;) Ich hätte es ja nicht als Installationskandidaten mitgeben sollen/müssen, aber zu wissen was es gibt ist auch nicht schlecht oder?

13. squirrelmail

aptitude install squirrelmail squirrelmail-viewashtml squirrelmail-logger

squirrelmail-configure  [Enter]

(courier-imap wählen) D [Enter], courier{eintippen}[Enter], continue... [Enter]

/!\ Wheezy Benützer, es ist nicht mehr nötig den Typ anzugeben des Maildeamon

(Sprache wählen) 10 [Enter] , 1 [Enter] , de{eintippen}[Enter], S [Enter], continue... [Enter], R [Enter] (ein allenfalls Save? mit y beantworten)

(Plugins wählen) 8 [Enter], fügen Sie calendar ,filters, mail_fetch, message_details, translate, squirrelspell, delete_move_next, squirrel_logger hinzu, indem Sie die Nummer dazu drücken, dann S [Enter], contiune... [Enter], Q [Enter]

Verlinken squirrelmail

ln -s /usr/share/squirrelmail/ /var/www/webmail

Ab diesem Moment funktioniert http://DeineDomain/webmail

/!\ Ich würde es aber wie in Tipps über https schicken, verschlüsselt die Anmeldung! (Automatische Weiterleitung an https, das ist save). Der Squirrel_Logger wird in fail2ban noch angepasst.

/!\ Veraltet Optional: ln -s /usr/share/phpmyadmin/ /var/www/phpmyadmin (nicht mehr verlinken)

Optional für phpmyadmin Installation stellt man es in /etc/apache2/conf.d/phpmyadmin.conf ein:

# phpMyAdmin default Apache configuration

#Alias /phpmyadmin /usr/share/phpmyadmin
Alias /Phantasienamesql /usr/share/phpmyadmin

Aktivieren: /etc/init.d/apache2 restart

Dann funktioniert optional: http://DeineDomain/Phantasienamemysql (veraltet: http://DeineDomain/phpmyadmin, siehe fail2ban)

13.1. Tipp: squirrelmail

13.1.1. 'Redirect Webmail to https'

squirrelmail-secure-login Paket funktioniert die Anmeldung nicht, ich überlasse die Umleitung sowieso lieber Apache. Ich würde in die /etc/apache2/sites-available/default folgendes reinschreiben vor dem Directory:

     Redirect /webmail  https://dein.server.org/webmail
       <Directory /var/www/>

damit es immer über https läuft (verschlüsselt die Anmeldung). Aktivieren /etc/init.d/apache2 restart

Optional: machen Sie die ähnliche Schritte für phpmyadmin (benennen Sie es nicht phpmyadmin eher ein Phantasiename, siehe fail2ban)

13.1.2. Spam Ordner anlegen

Jeder Benutzer kann im squirrelmail über Ordner sich einen Spam Ordner anlegen, und unter Optionen einen Nachrichtenfilter anlegen.

Nachrichtenfilter -> Neu -> Kopfzeile ->

X-Spam-Status: Yes

Ordner wählen Spam [Senden]

Aber Spam mit hohem Score werden einfach gelöscht, die erhält man nicht.

14. chown www

Wenn wir Daten in www schreiben, achten wir drauf das sie immer www-data Berechtigungen haben. Standardgemäss macht man.

chown -R www-data.www-data /var/www

15. Test Viren Spam

Schauen Sie zu was der Mail Server macht mit tail -f /var/log/mail.log Ich pflege noch ne Zeile hier ein, bauen Sie doch mal ein dhcp-mailserver auf und schicken auf diese Kiste ne email ;) Testen kann nie schaden. Weil auf postfix es von oben nach unten ab abgearbeitet wie iptables oder ipchains wird, was mal verworfen wurde, wird nicht mehr betrachtet, nicht mehr Filterbar. Also ob Sie sich selber die Kontrolle über eine Funktion entziehen. Passiert gern im Umgang mit UCE ;)

/!\ Da es Missverständnisse gab, noch eine Erklärung, keiner dieser Test-Emails darf ankommen bei Ihnen, dann haben Sie bestanden.

15.1. Spam Test

Schicken Sie sich an den neuen Email Server eine Email mit dem Inhalt:

Der Gtube Test:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Dies erzielt aber ein Score von 1000, diese wird einfach gelöscht.

15.2. Viren Test

Senden Sie sich an den neuen Email Server eine Email mit Attachment von Eicar Virentest , etwas runterscrollen. Diese Email wird einfach gelöscht.

15.3. Ein paar TestEmails mit Sendmail, lokaler Test

Dazu musst Du root sein, ein test Benützer anlegen. Und schon kann der Test losgehen. Es hat ein Liesmich.txt der alles erklärt. Test_Spam_Virus_Mails.zip

Auf der Suche nach Spam Emails (ich sammle die nicht), hat mir ein Kollege eine Datei geschickt. Die Datei hat EdelSpam gelautet!! :) Davon hab ich dann nützliche Emails generiert für das .zip.

16. Emails Umleiten

16.1. Emails nach User umleiten

Wir schicken mal alles möglich an den Benützer Karl. (fiktiver Namen, müsste natürlich ein richtiger Benutzer sein)

Edit /etc/aliases

root: karl
webmaster: karl
postmaster: karl
info@my.example.org:  karl
sales:  karl@hatnochein_hotmail.com

Aktivieren: postalias /etc/aliases

16.2. Emails nach Domain umleiten

Edit /etc/postfix/main.cf (zu unterst anfügen)

virtual_alias_domains = myother.example.org (hier kann man mehrere Domains mit leerzeichen einfügen)
virtual_alias_maps = hash:/etc/postfix/virtual

Edit /etc/postfix/virtual

postmaster@myother.example.org postmaster
info@myother.example.org       joe
sales@myother.example.org      jane
customer@myother.example.org   karl@hatnochein_hotmail.com
# Uncomment entry below to implement a catch-all address
# @myother.example.org         jim    (Alle email von da an jim)
  ...virtual aliases for more domains..

Aktivieren:

postmap /etc/postfix/virtual
postfix reload

17. Mögliche Erweiterungen

17.1. getmail4 Email Abholen

getmail4, um Emails von irgendwo anders abzuholen auf Server Ebene. (POP3 Abholer ist in Squirelle Optionen bereits vorhanden für jeden Benützer)

17.2. Procmail Email Filterung

Procmail, um gezieltes ausfiltern von emails zu ermöglichen auf Server Ebene.

18. Tipps

18.1. Diskspace

Diesen Script nach /etc/cron.monthly/diskspace.sh oder weekly oder daily so saven, und etws chmod 700 auf die Datei :=)

admin_email sind mehr als eine Email möglich, einfach ein Abstand.

Dabei ist hd_limit in Prozent gedacht, und wenn ne Harddisk das überschreitet, also weniger als 10% Freespace hat, machen wir email alarm!

Einen speziellen dank für die Grund-Entwicklung des Scripts an http://www.linuxfoo.de/ , kleine Anpassungen waren immer, nix ist perfekt, vorallem der Mensch nicht!

Privat will ich noch was anmerken, das /sd/ bezieht sich auf alle sda...sdz bis weis ich was laufwerke. Ich habe selber die blööde Situation das ich in einem ganz alten life-linux laufe. Etwa das Urgestein der virtuellen Maschinen. Und da heisst mein / eben nur rootfs heisst (statt /dev/was oder eben kurz sda). Also damit der Script tut, musste ich /sd/ gegen /rootfs/ austauschen. Ich hoffe Sie haben so viel Inspiration, falls sie auch noch in so einer alter virtellen Büchse hängen ;)

 #!/bin/sh
#Bitte das leerzeichen aus der ersten Zeile rausnehmen, scheiss CMS hier ,
admin_email="fullhd@myexample.org"
domain=`hostname -f`
hd_limit=90

msg=$(
    df -h | tail -n+2 | awk -v limit=$hd_limit '
        /sd/ {
            gsub("%","",$5); 
            if($5>=limit)
                printf "WARN: %-25s: %d%% used\n", $1, $5
        }'
)


if test -n "$msg" ; then 
        echo "$msg\n\nIt is recommend fix the problem, on Server:$domain\n"  | mutt -s "Diskspace Warning" $admin_email
fi
exit 0

18.2. htaccess

Die Datei .htaccess wird nur in den $HOME/public_html Verzeichniss verwendet. Falls ein Benützer ein Ordner Privat halten will.

Ich würde in /etc/apache2/mods-available/autoindex.conf

IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=* DescriptionWidth=* Charset=UTF-8

umschreiben auf ...

IndexOptions FancyIndexing VersionSort HTMLTable NameWidth=* DescriptionWidth=* Charset=UTF-8 ShowForbidden

Dann werden Verzeichnisse doch gelistet, sind aber dennoch geschützt mit Passwort vor Zugriff. Man kann Sie dann doch noch ausschalten die Verzeichnisse dass sie nicht mehr gelistet werden, siehe unten. Aktivieren /etc/init.d/apache2 restart

.htaccess Beispiel

AuthType Basic
AuthName "Bitte Passwort eingeben"
AuthUserFile /home/"USER"/htpasswd/htpasswdfile
Require valid-user
#Option -Indexes  #Ordner nicht mehr anzeigen.

18.3. fail2ban

Sobald ein paar Dienste laufen, wäre es eigentlich gut, wenn unser system, Passwort Angreifer, automatisch ausschliesst mit iptables (Firewall). Fail2ban ist über

aptitude install fail2ban

installierbar.

Detailiertere Infos auf Fail2Ban (lohnt sich schnell mal anschauen!)

..in Kürze: (zu unvollständig)

Die Konfigurationsdatei ist /etc/fail2ban/jail.conf , und man könnte ja mal die Orginalzeit etwas hochschrauben, nur als Beispiel:

# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1
bantime  = 604800  <---  Das ist , wie lange wir die IP sperren, in Sekunden.
maxretry = 3

Wenn Sie diesen Wert ändern dann: Aktiviern mit:

/etc/init.d/fail2ban restart

Wenn Sie nachschauen wollen wer in die Falle gegangen ist:

iptables --list

und da dann die fail2ban-log , jedem ist überlassen, wie er auf so leute reagiert wie überhaupt, ich auf meinem Weg ok ;)

18.4. Firewall

Folgende Ports müssen offen sein und an unseren Server weitergeleitet werden per Portforward oder NAT:

22(ssh), 25(smtp), 80 (http), 110 (pop3), 443 (https), 587 (submission), 995 (pop3s) Nur TCP

Falls Sie Samba laufen lassen wollen müssen folgende Ports offen sein, dürfen aber nicht Portforwarded/NAT sein, weil Samba macht man nur zuhause lokal:

137 138 139 445 sowol als TCP und UDP freigegeben werden.

Falls Sie sich nicht soviel um die Konfiguration im Linux mit Firewall machen mögen händisch, dann ist diese Firewall recht ok:

aptitude install arno-iptables-firewall

Und wenn Sie an der arno Firewall was einfaches verändern möchten:

Edit /etc/arno-iptables-firewall/debconf.cfg

#######################################################################
# Feel free to edit this file.  However, be aware that debconf writes #
# to (and reads from) this file too.  In case of doubt, only use      #
# 'dpkg-reconfigure -plow arno-iptables-firewall' to edit this file.  #
# If you really don't want to use debconf, or if you have specific    #
# needs, you're likely better off using                               #
# /etc/arno-iptables-firewall/custom-rules.  Also see README.Debian.  #
#######################################################################
DC_EXT_IF="eth0"
DC_EXT_IF_DHCP_IP=1
DC_OPEN_TCP="22 25 80 110 137 138 139 443 445 587 995"
DC_OPEN_UDP="137 138 139 445"
DC_INT_IF=""
DC_NAT=0
DC_INTERNAL_NET=""
DC_NAT_INTERNAL_NET=""
DC_OPEN_ICMP=0

Aktivieren mit /etc/init.d/arno-iptables-firewall restart

18.5. https SSL Zertifikate

Wenn die Webpage für uns ist, ist es kein Problem, einmal Unischeres SSL Zertifikat zu erlauben, weil wir es ja selber erstellt haben Ansonsten muss man sich solche Zertifikate kaufen, und in das System integrieren.

Es ist so, sie kaufen eine SSL Zertifikat, damit können Sie dann für https, TLS , SMTP-Auth,courier-pop,courier-imap Schlüssel erstellen. Dann kommen keine Warnungen mehr.

18.6. mysql freigeben für das WAN

Das braucht normal kein Mensch !! Ich schreib es nur, weil ein paar Idioten wissen wollen. Ich wurde schon oft angefragt, wie kommt man direkt an den mysql Server von aussen. Das ist gesperrt in /etc/mysql/my.cf bei der linie bind in der Datei. Wenn man will, kann man nochmals ein bind Eintrag vornehmen zusätzlich. Also eine zusätzliche linie mit bind 0.0.0.0 dann geht mysql server online, das port 3306 in der Firewall noch freigeben. Fertig. Man könnte dem bind config auch sagen nur die bestimmte IP. Naja, es liegt an euch. Wie immer :) Manchmal heisst es noch bind-adress in der /etc/mysql/my.cnf. Aber lasst die Linie stehen, nur ne neue mit bind-address = 0.0.0.0 gibt eucht support, /etc/init.d/mysql restart. Und die Firewall freigeben auf 3306 ok.

Der Test geht mit telnet domain 3306 und wenn ihr zeug seht, das ihr nicht versteht, dann hat mysql geantwortet ;))) Sonst kriegt ihr ein verweigert und closed im Telnet.

Manchmal ist es simpel ja oder nein ;)))

Es gibt Foren, die behaupten, dass man nen user mysql zugang nur machen kann wenn amn Grant hat. Naja Ihr seit genug alt oder? Liebe Grüsse.

18.7. System aktuell halten

So monatlich sollte man das machen:

aptitude update
aptitude upgrade

Info, also z.b die Virendefiniton laden wir im hintergrund runter, merkst nix von, aber wenn mal die API oder Engine, wie dem auch sagen willst, vom Virenscanner updaten musst, geht nur von hand, also tu den Tipp!! :)

19. Sonstiges

19.1. Windows Outlook

(Bestehende Benützer dieser Anleitung ;) müssen zuerst Punkt 10.2 folgen , und Punkt 10.0 "submission" aktivieren , erst dann hier gucken, ok )

Ich mach sicher ein Fehler hier noch outlook anzufassen, sobald man Windows anfasst.. hehe

Einstellungen Email Konto am Beispiel Outlook 2007:

...zuerst mal über das Menu->Extras->Kontoeinstellungen

Outlook2007_1.jpg

...dann Neu anklicken

Outlook2007_2.jpg

...unten links ein Häcken setzen

Outlook2007_3.jpg

Outlook2007_4.jpg

...statt POP3 könnte man auch IMAP wählen.

Outlook2007_5.jpg

...dann auf Weitere Einstellungen

Outlook2007_6.jpg

Der Postausgangsserver geht normal über Port 25, aber immer mehr Provider filtern das, also nehmen wir Port 587 (submission)

Outlook2007_7.jpg

Outlook2007_8.jpg

Es geht auch einfach IMAP Server über manuelle Konfiguration Outlook anzugeben. Auch nur deineDomain.org Rechner. Wie gesagt ist noch ein EinManServer.

19.1.1. Outlook Zertifikat speichern

Da wir selber ein Zertfikat erstellt haben, wird immer dieses Fenster gezeigt... Wir können Zertifikat anzeigen wählen....

ZertifikatSpeichern_1.jpg

...und gehen auf Details....und in Datei kopieren

ZertifikatSpeichern_2.jpg

ZertifikatSpeichern_3.jpg

...am besten auf Durchsuchen gehen und einen Namen geben.

ZertifikatSpeichern_4.jpg

ZertifikatSpeichern_5.jpg

ZertifikatSpeichern_6.jpg

19.1.2. Outlook Zertifikat aktivivern

Dann Aktiviern wir das Zertifikat in Outlook über Extras->Vertraungsstellungscenter

ZertifikatAktivieren_1.jpg

ZertifikatAktivieren_2.jpg

ZertifikatAktivieren_3.jpg

ZertifikatAktivieren_4.jpg

ZertifikatAktivieren_5.jpg

Ja nein, was hat mir im leben mehr Probleme gemacht, die unangelbdeten Viren , oder das Zertifikat, das ich selber gebaut habe?

19.1.3. Outlook Zertifikat wieder löschen

Das müssen wir leider im InternetExplorer machen über Extras->Internetoptionen->Inhalt->Zertifikate

ZertifikatLöschen_1.jpg

ZertifikatLöschen_2.jpg

ZertifikatLöschen_3.jpg

19.2. WEB Applikationen

Theoretisch laufen jetzt die üblichen WEB sachen, joomla, oscommerce, xt:commerce, wordpress (einfach immer zuerst über phpmyadmin ein User dafür einrichten mit gleichzeitigem erstellen der Datenbank, die Tabellen erstellen ja die Applikationen)

19.2.1. Sicherheit WEB APPS

Jede WEB APP hat ewtwas andere Anforderungen, aufjedenfall würde ich nie sich einzuloggen oder registrieren über normal http erlauben. Das muss immer über https gehen. Das müsst ihr jetzt selber lösen ;)

19.2.2. Angenommen ein Test Joomla 1.7.3 machen

joomla nach /var/www/joomla also ein Ordner , und erst da rein kommt dann das Joomla, für testzwecke sehr gut.

http://deineDomain/phpmyadmin und da dann einen neuen User (üblicher weise klickt man auf Rechte und findet neuen User anlegen) joomla anlegen, dabei setzen wir auch ein Häcken -> Datenbank entsprechend dem Namen erstellen, und setzen mal alle Rechte (Alles auswählen, dann GRANT abwählen das muss nicht sein) und dann erstellen. Logoff phpmyadmin

Dann denkt dran das zu tun, Dateirechte setzen.

chown -R www-data.www-data /var/www/joomla (das ersetzt alle root auf www-data Dateirechte)

und dann kannst http://deineDomain/joomla eintippen und die Installation beginnt und schnell durchtippen. Viel Spass

19.3. WEB Applikationen installieren

Diese Anleitung liegen immer der WEB Applikation bei, vielleicht/seltenst etwas geraffel an apache2. Es gibt Anwendungen die nach smtp Mailserver fragen, das ist natürlich deineDomain.org rechner, ohne smtp. Das hier ist nur ein EinManRechner ;)

Falsch: smtp.deineDomain.org (Ausser du lenkst es um auf nen anderen/eigenen Emailserver der die Addi hat ;)

Richtig: deineDomain.org

19.4. WEB Applikationen Upload Limit

Dann die übliche Frage, warum kann ich nicht mehr als 2MB hochladen in den WEB APPS mit Dateien hinzufügen/hochladen?

Edit /etc/php5/apache2/php.ini

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 100M

;und

; Maximum size of POST data that PHP will accept.
; http://php.net/post-max-size
post_max_size = 105M

Ich hab es einfach nie gesagt, da müsste ihr dann schon ein Harddisk Full Alarm installen, Aber immer mehr wollen die Leute ein .flv Video als Werbung zeigen. Aber dann würde ich nur noch dem Administrator der WEB Applikation zugang lassen was hochzuladen, nicht mehr dem gemeinem Volk. :)

Aktivieren: /etc/init.d/apache2 restart

20. Ziel überschossen

was denn nun? das Ei oder das Huhn?

---

KategorieMailServer

debian-webmail (zuletzt geändert am 2014-08-05 08:04:16 durch 178-82-237-60)