Kategoriearchiv 'Config'
Markus am 04.06.08 um 7:52 pm Uhr

Monitor your server

Config, Debian, Linux Tools

In times of high availability, you may want to make sure, your server is running properly, non stop and all the time. So do I - but recently I often experienced problems with the vServer. Either it was not available - or it was under high load (>20). And it didn’t respond to the web-interface anymore. So what can you do?

For example, you might install a monitoring tool. I suggest to take monit. With debian you can simply install it this way:

apt-get install monit

Otherwise, you have to compile it yourself. But now, some words concerning the topic of configuration:
monit can run as a daemon. It is suggested to be the best way, and so do I think.

You can monit the system itself, that means the memory resources and the CPU-load as well.
The next topic is to monit all services. That means, mail, web, ftp and so on. Just define values for the CPU-load each service takes or its availability. If it is not available for several cylces you can restart the service or just send an email. Anyway monit tells you via email, what it is doing.

Result: if you want to have a server with high availability you could use monit to make sure, the services you provide are running properly.

Markus am 25.05.08 um 2:38 pm Uhr

Quota for proftpd

Config, Linux Tools, Server

You can easily apply quota for an ftp-Server. In the following lines I will describe how to do it for proftpd.

1. Activate mod_quotatab.c in proftpd.conf


QuotaEngine on
QuotaLog /var/log/ftpd/quota.log

QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab

2. Download ftpquota-tool. Then use it for creating both files

ftpquota –create-table –type=limit
ftpquota –create-table –type=tally

3. Apply the quota as you like it like this (2Gb Download for user username in this case)

  ftpquota --add-record --type=limit --name=username --quota-type=class \
    --bytes-upload=0 --bytes-download=2 --units=Gb --table-path=/usr/local/etc/ftplimit.tab

4. Maintain your quota like this:
Show the entries:

ftpquota –show-records –type=limit

Change the entries:

ftpquota --update-record --type=limit --name=username --quota-type=user \
    --bytes-upload=0 --bytes-download=2 --units=Mb

Show the used quota:

ftpquota –show-records –type=tally

That’s it.

Markus am 20.04.08 um 5:15 pm Uhr

Postfix logging everything to /var/log/syslog

Config, Debian, mail

OK, while moving all the services to the vServer, I found out, that every information from the mailserver (postfix) had been logged to /var/log/mail.log and /var/log/syslog.

What can you do against it?
Have a look at /etc/syslog.conf. There is a line reading:

*.*;auth,authpriv.none -/var/log/syslog

Just change this line to:

*.*;auth,authpriv.none,mail.none -/var/log/syslog

… and you are done. (Please, don’t forget to restart the syslog-daemon. /etc/init.d/sysklogd restart)

Markus am 03.01.08 um 8:30 pm Uhr

Dovecot - Logrotate der Logfiles und ein dazugehöriger Problemfall

Config, Server, mail

Ich habe den Dovecot LDA so konfiguriert, dass er seine Logging-Informationen in ein eigenes File schreibt. Die zugehörige Zeile im Dovecot-Config-File /etc/dovecot/dovecot.conf sieht folgendermaßen aus:


protocol lda {
log_path = /var/log/dovecot-deliver.log
log_timestamp = “%b %d %H:%M:%S ” ….
}

Damit logged dovecot nach /var/log/dovecot-deliver.log.

Soweit so gut. Das funktioniert auch. Nun habe ich im nächsten Schritt defür gesorgt, dass auch dieses Logfile einmal pro Woche rotiert wird. Dazu folgendes File erzeugt: /etc/logrotate.d/dovecot

/var/log/dovecot-deliver.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 vmail vmail
postrotate
if [ -f /var/run/dovecot/master.pid ]; then
/etc/init.d/dovecot restart > /dev/null
fi
endscript
}

Hier ist unbedingt auf die Zeile create 640 vmail vmail zu achten! Ich hatte nämlich ursprünglich einfach ein anderes File kopiert und diese Zeile nicht angepasst. Und dann stand da: create 640 root root.
Das Ergebnis war, dass dovecot keine mails von Postfix angenommen hat. Und Postfix hat die dann ohne zu zögern zurückgeschickt, mit der für den Sender sicherlich hilfreichen Erkenntnis:
(Command died with status 80: “/usr/lib/dovecot/deliver”. Command output: deliver(mrre@gimme-th.at): Fatal: Can’t open log file /var/log/dovecot-deliver.log: Permission denied )

Mann, wie viele Leute werden sich da wohl wieder gewundert haben? Na, anyway, wieder mein übliches Problem: Berechtigungen, Berechtigungen, Berechtigungen!

Markus am 26.12.07 um 8:09 pm Uhr

Konfiguration eines Postfix-Mailservers mit Dovecot als LDA und ohne MySql

Config, Debian, Server, mail

Ziel dieser Beschreibung ist es, einen funktionierenden Postfix-basierten Mailserver zu betreiben. Der LDA (local delivery agent) soll dovecot sein. Der Mailserver soll eingehende Mails annehmen und nach außen Mails ausliefern. Das Ausliefern erfolgt über einen Mail-Relay, da der hier beschriebene Postfix hinter einer dynamischen IP hängt. Die Verwaltung der Domains sowie der User wird nicht mit mysql durchgeführt, sondern erfolgt in Textfiles. Die Installation erfolgt auf einem Debian-Etch-System.
Die Beschreibung basiert auf dem Howto von Christoph Haas. Deshalb werden hier im Wesentlichen die Schritte dokumentiert, die erforderlich sind, um den Mailserver ohne MySql - Unterstützung zu betreiben. Auf jedenFall empfiehlt es sich vorher sein HowTo zu lesen.

Zuerst sind die erforderlichen Pakete zu installieren.

apt-get install postfix
apt-get install dovecot-pop3d
apt-get install dovecot-imapd
apt-get install libsasl2
apt-get install libsasl2-module
s

Schreiten wir zur Postfix-Konfiguration

1. Es ist der user und die group vmail anzulegen, unter dem Postfix bzw. dovecot die virtuellen mail-user verwalten

groupadd vmail -g 5000
useradd vmail -d /home/vmail -g 5000 -m -s /bin/false -m 5000

2. Virtuelle Domains einrichten

Der Postfix-Server gehört zu einer Domain. Er kann aber auch weitere Domains verwalten. Die weiteren Domains sind die virtuellen. Genaueres kann man hier nachlesen oder im Postfix-Manual.

Es ist das File /etc/postfix/virtual_mailbox_domains anzulegen
Es enthält die gehosteten virtual domains. Der Inhalt sieht bei mir wie folgt aus:

gimme-th.at OK
lstr8.dynalias.com OK

Das heißt, der Postfix betreut die Domains: gimme-th.at und lstr8.dynalias.com. (Die zweite Domain ist eine über DynDNS verwaltete Domain - die, die ich vor der TLD hatte.)

Anschliessend ist ein postmap hash:/etc/postfix/virtual_mailbox_domains ausführen, um die Datenbank für den Postfix zu erstellen. (Der Befehlt erstellt die Datei: virtual_mailbox_domains.db. Aus diesem File bezieht postfix die Informationen.)

3. Das File mit den Speicherorten für die User-Mailboxen erstellen: /etc/postfix/virtual_mailbox_maps

mrre [ät] gimme-th.at gimme-th.at/mrre
mrre [ät] lstr8.dynalias.com lstr8.dynalias.com/mrre
trashbin [ät] gimme-th.at gimme-th.at/trashbin

Es werden alle gültigen email-Adressen aufgeführt. Achtung! Aus Spam-Gründen habe ich den Klammeraffen (@) durch ” [ät] ” ersetzt! Bitte berücksichtigen!
In diesem File bitte keine Umleitungen für Mailboxen einrichten. Dazu kommt es später noch!
Um das Datenbank-File zu erstellen der Aufruf:
postmap hash:/etc/postfix/virtual_mailbox_maps

4. Das File mit den Umleitungen für die Mailboxen anlegen: /etc/postfix/virtual_alias_maps

abuse [ät] gimme-th.at mrre [ät] gimme-th.at
complaints [ät] gimme-th.at trashbin [ät] gimme-th.at

postmap hash:/etc/postfix/virtual_alias_maps

Das heißt, dass die email-Adresse abuse [ät] gimme-th.at auf
mrre [ät] gimme-th.at umgeleitet wird.

Mit postmap kann man jetzt seine Files auf Funktionsweise testen. Die Anfrage:
postmap -q complaints [ät] gimme-th.at hash:/etc/postfix/virtual_alias_maps
liefert dann: trashbin [ät] gimme-th.at

Jetzt wären also die wichtigsten Files für die Postfix-Konfiguration erstellt.

5. Nun geht es an die Konfiguration von postfix /etc/postfix/main.cf

Es sind (zusätzlich) folgende Einträge notwendig. Ein Großteil der default-Einstellungen kann übernommen werden bzw. so bleiben!

# ————————- Virtual Domain options
virtual_mailbox_domains=hash:/etc/postfix/virtual_mailbox_domains
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = dovecot
dovecot_destination_recipient_limit=1

An dieser Stelle die ersten Kommentare:
virtual_mailbox_base = /home/vmail Hier wird das root-Verzeichnis für die Speicherung der virtuellen Mailboxen gesetzt. D.h. dieser Pfad wird vor die unter 3. genannten Pfade gesetzt.

virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = dovecot

Hier wird die uid und die gid vom User vmail angegeben. Der LDA wird dem Postfix bekannt gegeben: dovecot!
Und weiter geht’s mit der main.cf

# SMTP - AUTH
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
smtpd_recipient_restrictions=permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Hier werden die Parameter für’s SMTP-Auth über dovecot angegeben.


#relaying via selfhost
relayhost = [mail.selfhost.de]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
smtp_sasl_security_options = noanonymous
smtp_sasl_type=cyrus

Diese Zeilen sind erforderlich, wenn man über einen externen Mail-Relay gehen möchte, der ein SMTP-Auth erfordert. Ich relaye über Selfhost., da selfhost die DNS-Einträge für meine Domain verwaltet. Achtung! Wenn sich der Postfix-Server selbst an einem anderen mail-Server via SMTP-AUTH authentifizieren muss, dann geht das nicht über dovecot, sondern nur über cyrus! Deshalb die letzte Zeile.

Konfiguration von dovecot


# Authentication configuration
auth_verbose = yes

auth default {
mechanisms = plain login
passdb passwd-file {
args = /etc/dovecot/passwd
}
userdb static {
args = uid=vmail gid=vmail home=/home/vmail/%d/%n allow_all_users=yes
}

Die restlichen Konfigurationhinweise kann man von Workaround entnehmen.

Nun ist noch die Datei /etc/dovecot/passwd zu erstellen, in der die Passwörter gespeichert sind. Die könnte so aussehen:

mrre [ät] gimme-th.at:{Plain}MeinSicheresPasswort
thrashbin [ät] gimme-th.at:{Plain}MeinAnderesSicheresPasswort

Nun sind sowohl dovecot, als auch postfix zu starten.

/etc/init.d/postfix start
/etc/init.d/dovecot start

Anschließend sollte man testen, ob das mail-System funktioniert. Mit telnet auf dem Mail-Server einloggen:
telnet gimme-th.at smtp
ehlo mein.Server.com
mail from: You@yourdomain.com
rcpt to: mrre [ät] gimme-th.at
data
Hi mrre
.
quit

Damit loggt man sich per telnet auf dem mail-Server ein und versendet eine email an den mrre.

Ein weiteres gutes Werkzeug, um seinen mail-Server zu testen gibt es bei pingability. Dort werden sämtliche Funktionen getestet. Auch, ob der Server etwa ein open-Relay ist!

Anschließend der Hinweis: Sämtliche Probleme, die bei meiner Konfiguration aufgefallen sind, lagen an falschen Berechtigungen auf Dateien! Also: immer genau checken, ob der User vmail überall schreiben, bzw lesen darf, wo er möchte! :-)

Markus am 19.11.07 um 10:46 pm Uhr

Installation von Debian inclusive RAID1

Config, Debian, Linux Tools

Wie bereits hier geschrieben, kann man unter debian ein RAID 1 Array nachträglich aufsetzen. Das ganze ist aber auch während der Installation möglich.

Folgende Voraussetzungen sind erforderlich:

1. Ein Computer :-)
2. Mindestens zwei Festplatten (möglichst gleicher Typ / gleiche Größe)
3. Eine Möglichkeit debian zu installieren (CDs, DVDs, Netinstall)

Hier meine Vorgehensweise:

1. Installation bis zum Punkt Partitionierung wie gehabt.

2. Zum Zeitpunkt der Partitionierung werden beide (alle) Festplatten, die in das RAID-Array sollen gleichmäßig partitioniert.

a) Select “FREE SPACE”, dann < Enter >
b) “Create a new partition”, dann < Enter >
c) Größe auswählen, dann < Enter >
d) Select Primary bzw. Logical, dann < Enter >
e) Beginning, dann < Enter >
f) Use as, dann < Enter >
g) Auswahl von “physical volume for RAID”, dann < Enter >
h) Auswahl von “Done setting up tthe partition”, dann < Enter >

3. Diese Vorgehensweise für das komplette Partitionsschema für Festplatte 1 wiederholen.

4. Die Punkte 2 und 3 sind ebenfalls für alle anderen Platten des Arrays anzuwenden!

Nachdem diese Punkte erledigt sind, ist das RAID zu konfigurieren

5. Software RAID Konfiguration

a) Auswahl von: “Configure software RAID”, dann < Enter >
b) Auswahl von: “Yes” to “Write the changes to the storage devices and configure RAID?”, dann < Enter >

6. Konfiguration der Partitionen

a) Auswahl von: “Create MD device”, dann < Enter >
b) Auswahl von: “RAID1″, dann < Enter >
c) Auswahl von: “2″ for “Number of active devices for the RAID1 array” (falls mehr Platten, dann die Zahl entsprechend anpassen)
d) Auswahl von: “0″ for “Number of spare devices for the RAID1 array”
e) Auswahl der 1. Partition der ersten Platte, dann < Enter >
f) Auswahl der 1. Partition der zweiten Platte, dann < Enter >
g) Auswahl von “Continue”, dann < Enter >

Diese Schritte sind für alle weiteren RAID-devices zu wiederholen.

7. Setup der Mount Points für die RAID-Partitionen

a) Auswahl des ersten RAID-Devices, dann < Enter >
b) Auswahl von: “Use as”, dann < Enter >
c) Auswahl des Filesystems (ext3), dann < Enter >
d) Auswahl des Mount-Points (z.B. /boot), dann < Enter >
e) “Done Setting up the Partition, dann < Enter >

Diese Vorgehensweise für alle Partitionen wiederholen. Wenn alle RAID-Devices ihrem Verwendungszweck zugeführt sind, dann kann die Installation wie üblich fortgeführt werden.

Nachdem ich das System soweit installiert hatte, und das booten funktionierte, habe ich das RAID-Array angeschaut (cat /proc/mdstat). Und siehe da, nicht alle Partitionen waren vollständig. Aber, das entsprechende Device konnte einfach eingebunden werden: mdadm /dev/mdx -a /dev/sdby. Anschließend werden die Daten synchronisiert, und das RAID-Array ist fertig.

An dieser Stelle beginnt das Testen: Ein Laufwerk trennen, booten, schauen…

Und auch hier hat sich ein Problem bemerkbar gemacht. Der grub war nur auf einer Platte installiert. Wenn diese nicht vorhanden war, dann konnte nicht in das System gebootet werden. Das ist natürlich tödlich, wenn eine Platte defekt ist. Aber, der grub kann selbstverständlich nachträglich installiert werden. Dazu als root grub ausführen.

Nach dem starten (dauert ‘ne drittel Ewigkeit) folgendes eingeben:

grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

Damit wird auf der Platte, die kein grub hat (in diesem Falle sdb) der MBR nachinstalliert. Probieren, und es geht.

Wenn eine Platte defekt ist (aus welchem Grunde auch immer), dann erkennt man das in der Ausgabe von cat /proc/mdstat
md7 : active raid1 sda8[0] sdb8(1)(F) 176803200 blocks [2/1] [U_]
Es ist erkennbar, dass sdb8 fehlt. Wenn sie neu eingebunden werden soll, dann folgenden Befehl verwenden:

mdadm /dev/mdx -a /dev/sdby

Eine Platte aus dem RAID-Array entfernen mit: mdadm /dev/mdx -r /dev/sdby

Damit wären die wichtigsten Schritte zu erhöhter Datensicherheit durch RAID-1 auf einem debian-System getan.