Debian Mailserver Howto

Nachdem sich Debian immer weiterdreht, habe ich meine Mail- und Antispamhowtos zusammengefasst und mal auf den aktuellen Stand gebracht. Ich beziehe mich zwar im wesentlichen auf Debian, allerdings dürften abweichend von der Grundinstallation der Pakete, dieses Howto auf jeden anderen Linuxsystem ebenso funktionieren. Als Mailsystem kommen cyrus und postfix zum Einsatz, zur Authentifizierung der saslauthd. Zum Filtern und Virencheck setze ich Amavisd-new, Spamassassin, Razor, DCC und Pyzor ein.

Stand: 06.12.2009

ToDo – List:

– Authentifizierung (unterschiedliche Mechanismen)
– Usermanagement (Ldap)
– Usermanagement (MySQL)
– IMAP Backup

Als erstes installieren wir folgende Pakete:

#>apt-get install spamassassin razor perl pyzor procmail fetchmail postfix amavisd-new cyrus-common-2.2 cyrus-imapd-2.2 cyrus-admin-2.2 sasl2-bin saslauthd sasl2-bin libsasl2-modules libsasl2 libgsasl7 libauthen-sasl-perl ca-certificates

SASLAUTHD

Auch wenn es zunächst unsinnig erscheint, benutzen wir für unser kleines Szenario den saslauthd. Das macht es uns später einfacher den Authentifikationsmechanismus zu ändern. In der der /etc/default/saslauthd überprüfen wir die Konfiguration auf folgende Werte:

START=yes
MECHANISMS="sasldb"

CURUS

Die Konfiguration des Imap-Daemon geschiet durch das Editieren der /etc/imapd.conf. Das von Debian angelegte File ist vollkommen brauchbar. Es muss allerdings noch mindestens ein Administrator des Daemons festgelegt werden und wie die Athentifizierung von statten gehen soll..

Hier ein Auszug aus /etc/imapd.conf:

admins: cyrus
sasl_mech_list: PLAIN
sasl_pwcheck_method: saslauthd

Der User cyrus sollte automatisch von DEBIAN erstellt worden sein. Sollte dies nicht der Fall sein, kann das mittels

#> adduser cyrus

nachholgeholt werden.

Mit saslauthd stehen unterschiedliche Möglichkeiten der Authentifizierung zur Verfügung. Ich gehe vorerst nur auf die Voreingestellte ein, gegen die Sasldb. Bevor man den User cyrus zur Administration des imap-servers verwenden kann, müssen Sie ihm noch ein Passwort zuweisen (Hierzu muss sasl2-bin installiert sein):

#> passwd cyrus
#> saslpasswd2 -c cyrus

Somit sollte der Imapd voll funktionsfähig sein. Nun müssen wir nur noch dafür sorgen, dass die Userkonten eingerichtet werden. Hierfür gibt es als frontend zum Beispiel http://www.web-cyradm.org. Ich möchte hier nur kurz auf die Kommandozeile eingehen.

#> cyradm --user cyrus --server localhost
IMAP Password:
localhost.localdomain> cm user.test1
localhost.localdomain> sam user.test1 cyrus all
localhost.localdomain> quit

Abhängig von den Authentifizierungsmechanismen muss man eventuell noch mit

#> saslpasswd2 -c test1

ein Passwort vergeben.

POSTFIX

Bei der Installation wurden Sie in der Regel gefragt, wie POSTFIX genutzt werden soll. (local-delivery, Internet-Site…). Das ist egal, da wir die Konfigurationsdateien sowieso abändern. POSTFIX wird durch die Dateien /etc/postfix/main.cf und /etc/postfix/master.cf konfiguriert. Achtung: bitte etwaige Werte wie Subnetze etc. an die eigenen Gegebenheiten anpassen. Damit das Zusammenspiel mit CYRUS problemlos klappt, müssen folgende Zeilen in die Datei /etc/postfix/master.cf geschrieben werden:

smtp-amavis unix -      -       n       -       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  -       n       -       -  smtpd \
-o content_filter= \
-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,192.168.0.0/16 \
-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 smtpd_milters= \
-o local_header_rewrite_clients= \
-o local_recipient_maps= \
-o relay_recipient_maps= \
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks

cyrus     unix  -       n       n       -       -       pipe
flags=R user=cyrus argv=/usr/bin/spamc -e /usr/sbin/cyrdeliver -e -r ${sender} -m ${extension} ${user}

Die Datei /etc/postfix/main.cf wird um folgende Einträge ergänzt:

content_filter=smtp-amavis:[127.0.0.1]:10024
mailbox_transport = cyrus
mailbox_command = /usr/bin/procmail -t -a $EXTENSION
mynetworks = 192.168.1.0/8, 127.0.0.0/8

Der Eintrag mynetworks dient dazu, dass Mails von diesen Rechnern, mit beliebigem Absender verschickt werden können(sogenannter Relayserver).

FETCHMAIL

Wenn der Mailserver mit MX Eintrag für Ihre Domain zu erreichen ist und sie keine weiteren Postfächer und Konten abholen müssen überspringen Sie den Teil. Fetchmail muss mitgeteilt werden, welche Accounts geholt und wie sie verarbeitet werden müssen. Globale Einstellungen können im File /etc/fetchmailrc vorgenommen werden. Hier, die auf unser Szenario abgestimmte, /etc/fetchmailrc.

defaults
proto pop3
no dns

poll pop.gmx.net
proto pop3
auth password
via pop.gmx.net
user "1234567"
pass "geheim"
is "test1" here

Im Detail passiert hier folgendes: Wir holen die Emails vom GMX – Konto des Users 1234567 ab und stellen sie lokal an den User test1 zu. Wenn Sie beispielsweise ein sogenanntes Catch-All-Postfach abholen, lassen Sie den Part „is „test1″ here“ einfach weg. Die Mails können dann via den verschiedenen Aliasmechanismen auf unterschiedliche Nutzer verteilt werden.

AMAVIS-NEW

Ich installiere Avira AntiVir PersonalEdition Classic. Hier sei darauf verwiesen, dass es noch jede Meneg weitere Virenscanner gibt, die von Amavis-new unterstützt werden. Ansonsten muss man amavis noch verständlich machen, wer sich auf ihn verbinden darf. Dies erfolgt mittels @inet_acl am besten in der 50-user

@inet_acl = qw(127.0.0.1 192.168.0.1);

Abschliessend sollte man noch einige Werte anpassen:

$sa_tag_level_deflt  = 3.0;
$sa_tag2_level_deflt = 5.0;
$sa_kill_level_deflt = 14.0;

und nicht vergessen folgende Zeilen in /etc/amavis/conf.d/15-content_filter_mode auskommentieren(# entfernen):

@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);

SPAMASSASSIN

SpamAssassin wird unter dem User cyrus ausgeführt, deswegen müssen wir ein paar Anpassungen zur Nutzung der Bayes Datenbank vornehmen. Die /etc/spamassassin/local.cf wird wie folgt umgeschrieben:

report_safe 1

bayes_path /var/spool/cyrus/.spamassassin/bayes
razor_config /var/spool/cyrus/.razor/razor-agent.conf
auto_whitelist_path /var/spool/cyrus/.spamassassin/auto-whitelist
bayes_file_mode 0777
auto_whitelist_file_mode 777

lock_method flock
required_score 5.0
use_bayes 1
bayes_auto_learn 1

bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status

use_razor2              1
use_pyzor               1
use_dcc 1

ok_languages            en de
ok_locales              en de

score RAZOR2_CHECK 2.500
score BAYES_99 4.300
score BAYES_90 3.500
score BAYES_80 3.000

rewrite_header Subject Spam [_HITS_]

Damit die Filterung nach Sprachen funktioniert müssen wir in /etc/spamassassin/v310.pre

# TextCat - language guesser
#
loadplugin Mail::SpamAssassin::Plugin::TextCat

und für dcc

# DCC - perform DCC message checks.
#
# DCC is disabled here because it is not open source.  See the DCC
# license for more details.
#
loadplugin Mail::SpamAssassin::Plugin::DCC

entkommentieren.

Ebenso müssen wir die /etc/default/spamassassin mittels der Option -A anpassen, ansonsten kann spamc nicht auf den spamd konnektieren, weiterhin ergänzen wir ein Log.

OPTIONS="--create-prefs --max-children 5 --helper-home-dir -i 127.0.0.1 -A 192.168.0.1 -A 127.0.0.1 -s /var/log/spamlog"

RAZOR

Vipul’s Razor ist ein verteilter serverseitiger Spam Filter. Razor erstellt kontinuierlich einen Katalog Server zur Spamerkennung. Dieser Server wird durch Internetnutzer mit Spam-Mails gefüllt. Erhält der Server dieselbe Spam Nachricht öfters und von verschiedenen Nutzern wird diese im Katalogserver als Spam gelistet. SpamAssassin prüft ob auf dem Razor Server eine Nachricht als Spam gelistet ist und vergibt im Falle einer positiven Anwort Punkte. Damit das auch funktioniert müssen wir unter dem User cyrus Razor einrichten

#> razor-admin -home=/var/spool/cyrus/.razor/ -create
#> razor-admin -home=/var/spool/cyrus/.razor/ -discover
#> razor-admin -home=/var/spool/cyrus/.razor/ -register

PYZOR

Pyzor ist ähnlich wie Razor und DCC ein verteiltes System zur Erkennung von Spam und basiert auf der Programmiersprache Python. Leute die unerwünschte Mails bekommen, können diese an öffentliche Pyzor Server senden. Wenn dieselbe Mail von mehreren Nutzern als Spam an die Pyzor Datenbank übermittelt wurde wird diese dort gelistet. Bei der Listung in Pyzor wird nicht der Inhalt der Mail gespeichert sondern eine Checksumme der Nachricht. SpamAssassin kann diese Pyzor Datenbank nutzen um zu prüfen ob Nachrichten als Spam gelistet sind und vergibt in diesem Falle Spampunkte.

Als User curus wiederum richten wir pyzor ein

#> pyzor discover
#> pyzor ping

Wenn ein timout kommen sollte nicht gleich erschrecken, pyzor funktioniert bei mir trotz alledem. Alternativ kann man auch die Datei ~/.pyzor/server editieren und einen alternativen Server eintragen 82.94.255.100:24441. Nachzulesen: Bug Track

DCC

Distributed Checksum Clearinghouse ist ähnlich wie Razor und Pyzor ein verteiltes System zur Erkennung von unerwünschten Werbe-Emails, UBE(englisch: unerwünschte bzw. unverlangte Massenmail), UCE (englisch: unerwünschte bzw. unverlangte Werbemail) oder schlicht Spam oder Junk-Mail.

DCC kann man sich von http://www.rhyolite.com/anti-spam/dcc downloaden. Entpacken Sie das Archiv in ein Verzeichnis und installieren Sie durch folgende Befehle:

#>./configure --disable-server  --disable-dccm
#>make
#>make install

SASL & TLS/SSL

Ebenso wichtig wie das Einbinden von Filtermechanismen in einen Maildeamon ist das Verhindern, dass man selbst unwissentlich zum Spammer wird. Im Folgenden soll Postfix so abgesichert werden, dass Mails nur mittels einer Authentifizierung via ssl abgeschickt werden können und Mails die er entgegen nimmt, an ein UserKonto z.B. bei unseren Domain – Hoster ausliefert. Hierzu fügen wir in die /etc/postfix/main.cf folgendes ein:

smtp_sasl_auth_enable = yes
smtpd_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_always_send_ehlo = yes
smtpd_sasl_security_options = noanonymous
relayhost = relayhost.de
broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, check_relay_domains, reject

Zu den Optionen im Einzelnen:

Mit smtp(d)_sasl_auth_enable = yes aktivieren wir die Authentifizierung gegen SASL, sowohl ausgehend als auch eingehend. Mit smtp_always_send_ehlo = yes zwingen wir postfix immer ESMTP konform zu senden. Mit smtpd_sasl_security_options = noanonymous verhindern wir anonyme Anmeldungen. Mit broken_sasl_auth_clients = yes erlauben wir älteren Outlook Clients die Anmeldung. Wenn wir unsere Emails ebenfalls über einen Relayhost mit Authentifizierung schicken wollen(unseren Hoster), sind nachfolgende Zeilen notwendig:

smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
relayhost = relayhost.de

Dann muss die Datei /etc/postfix/sasl_passwd mit folgendem Inhalt angelegt werden:

relayhost.de username:password

Wobei relayhost.de unser Relayhost ist, über den wir unsere Emails versenden wollen. Danach wird eine neue Map erzeugt:

#>postmap /etc/postfix/sasl_passwd

Der Parameter smtpd_recipient_restrictions wird so abgeändert, dass unser MTA nur SASL authentifizierte Clients und Clients aus Netzen, die in mynetworks deklariert wurden, akzeptiert. Der Rest wird abgewiesen.Als nächstes konfigurieren wir je nach Installation SASL. In den meisten Fällen muss die /etc/postfix/sasl/smtpd.conf mit folgendem Inhalt angelegt werden:

pwcheck_method: saslauthd

Abschließend Postfix mittels /etc/init.d/postfix force-reload mit der neuen Konfiguration versorgen und das Ganze testen.

User legen wir wie folgt an:

#> saslpasswd2 -c USERNAME

Nachdem wir unserem User ein Passwort verabreicht haben, können wir die SASL Funktion mittels Telnet überprüfen:

#> perl -MMIME::Base64 -e 'print encode_base64("USERNAME\0USERNAME\0PASSWORT")';

gibt uns den Authentifizierungsstring den wir benötigen, wenn wir uns plain authentifizieren wollen. Nun loggen wir uns in unseren MTA:

#> telnet 127.0.0.1 smtp
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 test.rfc822.org ESMTP Postfix
ehlo test
250-test.rfc822.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN CRAM-MD5
250-XVERP
250 8BITMIME
auth plain <STRING>
235 Authentication successful
quit
221 Bye
Connection closed by foreign host.

SASL funktioniert, nun wir können uns der Verschlüsselung zuwenden.

TLS/SSL

Wenn wir bereits SSL – Zertifikate erworben haben, kopieren wir den öffentlichen nach /etc/ssl/certs/$hostname.pem und den privaten Schlüssel nach /etc/ssl/private/$hostname.key. Solche können beispielsweise hier erworben werden: (CaCert) Vom Gebrauch selber erstellter Schlüssel, die nicht gegen eine Zertifizierungsstelle authorisiert sind, rate ich dringend ab. Auch an dieser Stelle setzen wir TLS eingehend und ausgehend ein.

# serverside TLS
smtpd_tls_cert_file=/etc/ssl/certs/$hostname.pem
smtpd_tls_key_file=/etc/ssl/private/$hostname.key
smtpd_use_tls=yes
smptd_tls_CApath=/etc/ssl/certs
smtpd_tls_received_header = yes
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache

# client-side TLS
smtp_use_tls = yes
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtp_tls_cert_file=/etc/ssl/certs/$hostname.pem
smtp_tls_key_file=/etc/ssl/private/$hostname.key
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

Letztlich starten wir postfix durch und schauen uns die Logfiles an. Wenn alles ordnungsgemäß konfiguriert wurde, nutzt Postfix nun SASL und TLS als Schutzmechanismen vor unauthorisertem Gebrauch.

SPAMTRAINING & AUSWERTUNG

Mit sa-update besteht ein Tool, mit dem wir das Spamassassin Regelwerk anpassen und aktuell halten können. Der Mechanismus ist immer der gleiche, wenn man sich für einen sogenannten Channel entschieden hat, muss man den gpg Schlüssel importieren und dann sa-update mittels

#> sa-update --allowplugins --gpgkey D1C035168C1EBC08464946DA258CDB3ABDE9DC10 --channel saupdates.openprotect.com

Um den ganzen Prozess zu vereinfachen habe ich mir ein File /etc/spamassassin/sa-update-channels.txt angelegt und in diesem die Channels eingetragen:

updates.spamassassin.org
saupdates.openprotect.com
70_sare_stocks.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_genlsubj_x30.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_zmi_german.cf.zmi.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_highrisk.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_uri1.cf.sare.sa-update.dostech.net
70_sare_uri3.cf.sare.sa-update.dostech.net
70_sc_top200.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
88_FVGT_Bayes_Poison.cf.sare.sa-update.dostech.net
88_FVGT_Tripwire.cf.sare.sa-update.dostech.net
88_FVGT_rawbody.cf.sare.sa-update.dostech.net
88_FVGT_subject.cf.sare.sa-update.dostech.net
chickenpox.cf.sare.sa-update.dostech.net

damit alles automatisch funktioniert, auch die gpg – Überprüfung muss noch ein Keyfile angelegt werden /etc/spamassassin/keys

856AA88A
5244EC45
BDE9DC10

Als nächstes können wir uns dann einen Cronjob einrichten, der die Regelfiles aktualisiert:

0 0    * * 0     root      /usr/bin/sa-update -D --channelfile /etc/spamassassin/sa-update-channels.txt --gpgkeyfile /etc/spamassassin/keys > /dev/null

Spamassassin übernimmt die neuen regeln nur nach einem Neustart. Dieser sollte jedoch nicht durchgeführt werden, bevor man mittels

#> spamassassin -D --lint

die Regeln überprüft hat.

SA-LEARN-CYRUS

In unserer /etc/spamassassin/local.conf haben wir mit bayes_path schon eine globale Bayes Datenbank definiert. Der Grundgedanke dahinter ist, jeden User etwaigen SPAM und HAM in einen bestimmten IMAP-Ordner abzulegen und Spamassassin diese regelmässig lernen zu lassen. Hierzu gibt es ein schönes Tool für den Cyrus, welches mitlerweile der Debian Distribution beiliegt: sa-learn-cyrus Das Tool kommt von http://www.pollux.franken.de/hjb/mail-server/index.html und leistet schon mehrere Jahre bei mir hervorragend seinen Dienst. Ich habe mich entschieden 2 Imapfolder unter Inbox anzulegen einmal sa-spam und sa-ham. dementsprechend muss in der /etc/spamassassin/sa-learn-cyrus.conf folgendes angepasst werden:

# Spam folder relative to INBOX (cyrus nomenclature: e.g. 'junk.Spam')
spam_folder = 'sa-spam'

# Ham folder relative to INBOX (cyrus nomenclature: e.g. 'junk.Ham')
ham_folder = 'sa-ham'

Damit wir keine Berechtigungsprobleme bekommen, folgende Werte noch wie unten beschrieben anpassen:

# SA user and group
user = cyrus
group = mail

Mit folgenden Cronjob wird dann automatisch alles eingesammelt:

0 */1  * * *   root    /usr/sbin/sa-learn-cyrus -c /etc/spamassassin/sa-learn-cyrus.conf > /dev/null

SA-STATS

Sa-stats ist ein Log-Datei-Analysator, der Statistiken über die Spam-und Ham-Einträge durch die Analyse der Einträge in einer Log-Datei von pamassassin generiert. Es können Statistiken für eine gesamte Log-Datei bestimmte User, Zeiten oder Domains abgerufen werden. Die Webseite und den Download findet Ihr hier: Mirror1 Mirror2. Ein Hinweis sa-stats funktioniert bei mir nur korrekt, wenn ich mich in dem Verzeichnis des Logfiles, in unserem Szeanrio /var/log/spamlog, befindet.

CACTI

Als nächstes soll es uns darum gehen Cacti an den Start zu bringen. Cacti soll uns den Überblick über unser Filteraufkommen zeigen. Ich setze dabei eine funktionierende Postfix, Amavis und Spamassassin Installation vorraus, sowie einen funktionierenden Apache und MySQL Datenbank.

#> apt-get install snmpd

Als nächstes richten wir den SNMP Deamon so ein, dass nur lokale Zugriffe erlaubt sind. In /etc/snmp/snmpd.conf ändern wir die Zeile

com2sec    readonly     default            public

in

com2sec    readonly    127.0.0.0/24   public

Des weiteren fügen wir unter dem Abschnitt „System contact information“ ein paar Daten ein.

system.sysContact.0 = "Name des System Admin/Email Adresse"
system.sysName.0 = "Rechner Name und Systembeschreibung"

Damit der snmpd nur auf 127.0.0.1 läuft tragen wir noch

smuxsocket  127.0.0.1

in die /etc/snmp/snmpd.conf nach. Danach wird noch in der folgenden Datei /etc/default/snmpd die Zeile „SNMPDOPTS“ durch den Parameter „udp:127.0.0.1:161“ ergänzt. Der snmpd soll schließlich auch nur auf der lokalen IP lauschen.

SNMPDOPTS='udp:127.0.0.1:161 -Lsd -Lf /dev/null -p /var/run/snmpd.pid'

Damit sollte die Konfiguration des snmpd abgeschlossen sein. Jetzt nur noch schnell ein Neustart zum übernehmen der Änderungen. Zum Schluß können wir das ganze auch schnell mal Testen. Das folgende Kommando sollte diverse Informationen über das System liefern.

snmpwalk -v 2c -c public localhost system

Als nächstes kommen wir zur Installation von Cacti.

Am besten legen wir vorher schon die Datenbank und einen Datenbank Benutzer für Cacti an. (MySQL) Der Datenbanknutzer sollte für die spätere Überwachung von mysql mit dem globalen Recht „PROCESS“ angelegt werden. Bitte Datenbankname, Datenbankuser und Password in die gewünschten Werte ändern.

CREATE DATABASE datenbankname;

GRANT PROCESS ON *.* TO ‚datenbankuser’@’localhost‘ IDENTIFIED BY ‚Password‘;

GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , INDEX , ALTER ON `datenbankname` . * TO ‚datenbankuser’@’localhost‘;

FLUSH PRIVILEGES;

Einfach Cacti und gleich auch Cactid per apt-get installieren.

apt-get install cacti cactid

Dem Installer geben wir wahrheitsgemäß Auskunft und nach erflogreicher Installation spielen wir die Datenbank ein:

zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -u datenbankuser -p datenbankname

Nun können wir das ganze unter http://hostname/cacti/ bestaunen. Benutzer und Passwort für das erste einloggen ist jeweils „admin“. Nach dem ersten Einloggen, werden wir sofort aufgefordert dies zu ändern.Zum Schluss aktibieren wir noch cactid, da dieser wesentlich performanter läuft. Um cactid zu aktivieren sollte man unter den „Settings“ unter dem Reiter „Paths“ den Pfad zu cactid anpassen… unter Debian /usr/sbin/cactid. Danach unter dem Reiter „Poller“ den „Poller Type“ auf „cactid“ umstellen.

Als nächstes besorgen wir uns von http://forums.cacti.net/viewtopic.php?p=51584#p51584 das Mailstatistik Paket und installieren dieses wie vorgegeben. Als erstes fügen wir folgende Zeile in die /etc/snmp/snmpd.conf ein:

pass .1.3.6.1.4.1.2021.255 /usr/local/sbin/fetch_mail_statistics.pl \ /var/log/mail.log /var/log/mailstats.db .1.3.6.1.4.1.2021.255

Hierbei bitte aufpassen, dass der User unter dem der SNMP Deamon läuft auch die Leserechte für /var/log/mail.log und Schreibrechte für /var/log/mailstats.db besitzt und die Pfade korrekt angepasst wurden. Eine einfache aber auch sicherheitstechnisch bedenkliche Methode ist, den snmpd unter root zu starten mittels der Angabe „-u root“ in der /etc/default/snmpd.

Nachdem wir SNMP neugestartet haben, prüfen wir mittels

snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.255

ob unsere Konfiguration erfolgreich übernommen wurde. Parallel dazu können wir auch händisch versuchen ob alles korrekt eingerichtet wurde. Unter dem User snmp starten wir dazu das fetch_mail script wie folgt

./fetch_mail_statistics.pl /var/log/mail.log /var/log/mailstats.db .1.3.6.1.4.1.2021.255 -g .1.3.6.1.4.1.2021.255.1

Wenn alles korrekt läuft, sollte das Script eine ähnliche Ausgabe erzeugen:

.1.3.6.1.4.1.2021.255.2

integer

0

Im falle, dass uns

UCD-SNMP-MIB::ucdavis.255 = No Such Instance currently exists at this OID

filter
filter
transport
transport

angezeigt wird, liegt dies wahrscheinlich darin, dass die Scripte keine ausreichenden Rechte haben. Nun importieren wir in Cacti das xml Template und richten die Graphen ein. Entsprechende Ergebnisse sollten so oder so ähnlich aussehen: