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
Inhaltsverzeichnis
- Vorwort
- Vorwort zur Sicherheit
- Vorwort zu Filesystemen
- Grundsätzlich root
- Grundlegend
- sources.list
- hostname und hosts
- Updates & Locales
- Die Skel füllen / Ordner erstellen
- Postfix, Courier, Saslauthd, MySQL, rkhunter, binutils,mutt
- Amavisd-new, SpamAssassin, Clamav, Postgrey
- Apache2, PHP5, FCGI, suExec, Pear, mcrypt
- squirrelmail
- chown www
- Test Viren Spam
- Emails Umleiten
- Mögliche Erweiterungen
- Tipps
- Sonstiges
- Ziel überschossen
1. Vorwort
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. 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
...dann Neu anklicken
...unten links ein Häcken setzen
...statt POP3 könnte man auch IMAP wählen.
...dann auf Weitere Einstellungen
Der Postausgangsserver geht normal über Port 25, aber immer mehr Provider filtern das, also nehmen wir Port 587 (submission)
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....
...und gehen auf Details....und in Datei kopieren
...am besten auf Durchsuchen gehen und einen Namen geben.
19.1.2. Outlook Zertifikat aktivivern
Dann Aktiviern wir das Zertifikat in Outlook über Extras->Vertraungsstellungscenter
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
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?
---