Home.

Technik-Blog

Willkommen auf meinem
Notiz - Blog
Blog

Kmoser's Tech-Blog

Samstag
14
Juni 2014
Klaus Moser
Klaus Moser

Ubuntu - Systemzeit einstellen

Jeder Rechner besitzt eine integrierte Uhr. die ab und an gestellt werden sollte.

Anzeigen lässt sich die Uhrzeit und das Datum mit dem Befehl

date

Um die Systemuhr anhand eines NTP-Servers zu stellen führt man diesen Befehl auf:

sudo ntpdate -u ptbtime1.ptb.de

Möchte man nur die Zeit anzeigen ohne die Systemuhr zu stellen, dann kann man folgendes auch als unpriviligierter Benutzer ausführen:

ntpdate -uq ptbtime1.ptb.de

Wie es aussieht ist ntpdate inzwischen deprecated und man sollte stattdessen ntpd verwenden.

sudo apt-get install ntp

Die Konfiguration erfolgt über die Datei /etc/ntp.conf.

sudo nano /etc/ntp.conf

Hier habe ich die Server der Physikalisch-Technischen Universität Braunschweig als Zeitserver eingetragen.

server ptbtime1.ptb.de
server ptbtime2.ptb.de
server ptbtime3.ptb.de

Abschließend den Server starten:

sudo /etc/init.d/ntp start 

Manuell kann man den Abgleich übrigens machen mit

sudo ntpd -q -g -x -n 
Samstag
14
Juni 2014
Klaus Moser
Klaus Moser

Ubuntu 14.04 - Mailserver - Sieve Plugin

Da der Mailserver jetzt ja steht, versuche ich mal ein paar von diesen praktischen Plugins einzubauen. Als erstes nehme ich mir mal sieve vor.

Sieve

Mit der Dovecot Erweiterung Sieve ist es möglich Mails bereits auf dem Webserver in Verzeichnisse sortieren zu lassen. Sieve ist eine Sprache zur Filterung von Mails. RFC 3028.

Folgendes installiert die Erweiterung:

apt-get install dovecot-sieve dovecot-managesieved

Für Sieve muss Dovecots LDA oder Dovecots LMTP verwendet werden.

LDA

Die Variante Sieve im LDA zu benutzen habe ich nicht getestet, sollte aber in etwa so funktionieren:

Postfix muss mitgeteilt bekommen dass man den Dovecot LDA verwenden möchte. Dazu trägt man folgendes in die /etc/postfix/main.cf ein:

mailbox_command = /usr/lib/dovecot/deliver 

In der Datei /etc/dovecot/conf.d/15-lda.conf muss die Zeile für die mail_plugins einkommentiert und sieve hinzugefügt werden:

protocol lda {
  # Space separated list of plugins to load
  #(default is global mail_plugins).
  mail_plugins = $mail_plugins sieve
}

LMTP

In der Datei /etc/dovecot/conf.d/20-lmtp.conf muss die Zeile für die mail_plugins einkommentiert und sieve hinzugefügt werden:

protocol lmtp {
  postmaster_address = postmaster@meinedomain.de
  mail_plugins = $mail_plugins sieve
}

Alle Plugins sind übrigens unter /usr/lib/dovecot/modules zu finden.

Sieve Konfiguration

Die Konfiguration von Sieve erfolgt in der Datei /etc/dovecot/conf.d/90-sieve.conf:

plugin {

  # Benutzerspezifische Konfiguration
  sieve = /var/vmail/%d/%n/dovecot.sieve

  # Benutzerspezifische Konfigurationen
  sieve_dir = /var/vmail/%d/%n/

  #sieve_default  = /var/vmail/%d/default.sieve
  #sieve_global_dir = /var/vmail/%d/conf.d/sieve
}

Dateien in den Ordnern sieve_dir und sieve_global_dir müssen die Dateiendung .sieve haben, da sie sonst nicht erkannt werden. Der Parameter sieve_global_path ist übringes deprecated. Das Script unter sieve_default wird nur dann ausgeführt wenn kein benutzerspezifisches Script gefunden wird.

Sieve Scripts

Ein paar Beispielscripts sind z.B. im Dovecot Wiki zu finden. Im Prinzip sieht der Aufbau der Datei so aus, dass am Anfang die nötigen Plugins referenziert werden und dann eine if/elsif/else Konstruktion folgt.

require ["fileinto", "envelope"];

# Mail von einem Bestimmten Absender
if envelope :is "from" "someone@domain.de" {

  # In der Ordner "Someone" auf Ebene der INBOX verschieben
  fileinto "Someone";
}
elsif  envelope :is "from" "other@domain.de"  {

  # In einen Unterordner von INBOX
  fileinto "INBOX.Test";
} elsif ... {
  [...]
} else {
  keep;
}

Nach dem Ändern eines Scripts muss Dovecot übringens nicht neu gestartet werden (wäre auch ziemlich sinnfrei).

Sieve Remote Management

Der Port für das Remote Management der Sieve Regeln muss in der Datei /etc/dovecot/conf.d/20-managesieve.conf festgelegt werden. Standard ist 4190.

service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}

Zum Schluss noch Dovecot und ggf. Postfix neu starten

sudo service dovecot restart
sudo service postfix restart 

Thunderbird Add-On

Für Thunderbird gibt es ein Add-On mit dessen Hilfe man die Regeln auf dem Server bearbeiten kann. Das Add-On heißt "Sieve".

Allerdings muss man das Nightly Build verwenden, da das offizielle Add-On nicht funktioniert. Das Plugin gibt es hier: https://github.com/thsmi/sieve/blob/master/nightly/README.md

Hat man dieses Installiert steht ein neuer Reiter in den Kontoeinstellungen zur Verfügung auf dem man erst mal einstellen muss, dass derMailserver Sieve unterstützt.

Hat man das gemacht kann man über "Neu" Sieve Scripts anlegen. Das Editieren ist ein Traum da man einen Code Editor mit Syntax Highlightning und Syntaxprüfung zur Verfügung hat.

Thunderbird Add-On Sieve
Sonntag
08
Juni 2014
Klaus Moser
Klaus Moser

Ubuntu 14.04 - Mailserver - Fetchmail

Fetchmail dient dazu entfernte Postfächer auf Mails zu prüfen und diese abzuholen und an ein lokales Postfach weiterzugeben.

Installiert wird fetchmail mit

sudo apt-get install fetchmail

Es gibt eine globale Konfigurationsdatei /etc/fetchmailrc und benutzerspezifische Dateien unter ~/.fetchmailrc.

Da ich ja virtuelle Benutzer habe, kann ich nur die globale Konfigurationsdatei verwenden. Zunächst werden ein paar generelle Einstellungen getätigt:

sudo nano /etc/fetchmailrc

In die Datei kommt folgender Inhalt:

# Name des administrativen Empfängers
set postmaster "postmaster@meinedomain.de"

# Direkte Fehlermeldungen an den Sender (default)
set bouncemail

# Keine Bounces an spam-blocked mail (default)
set no spambounce

# Errorlogging über syslog(3)
set syslog set properties ""

# Alle 300 Sekunden (5 min) ausführen
set daemon 300

set properties ""

Mails abholen

Um nun Mails von dem Benutzer account@provider.de mit dem Passwort geheim von einem externen Provider mit dem Mailserver pop.provider.de über eine verschlüsselte Verbindung über den IMAPS-Port abzuholen und den lokalen Postfächern zuzuweisen benötigt man eine solche Konfiguration:

poll pop.provider.de with proto POP3/IMAP
  user 'account@provider.de there' with password 'geheim'
  is 'me@meinedomain.de' here
  keep ssl
Option Funktion
poll Entfernter Mailserver von dem E-Mails abgeholt werden sollen
user Benutzername des E-Mail Kontos auf dem entfernten Server
password Passwort des E-Mail Kontos auf dem entfernten Server
is xxx here Lokales Postfach in das die Mails zugestellt werden sollen
ssl Verwende SSL-verschlüsselte Verbindung um die Mail abzuholen (Port 993)
sslcertck Prüfung der Zertifikats mittels lokal vorliegender, vertrauenswürdiger Zertifikate
sslcertpath Pfad in dem die vertrauenswürdigen Zertifikate liegen
sslproto SSL Protokoll für die Verbindung (SSL2/SSL3/SSL23/TLS1)
keep Löscht die abgerufenen E-Mails nicht vom Server
nokeep Gegenteil von keep. Löscht die Mails nach dem Abruf.
fetchall Es werden alle E-Mails abgerufen, auch alle die schon geholt wurden.
limit E-Mails, die größer sind, als die Angabe, werden nicht heruntergeladen
interval Wenn das Skript abgearbeitet wird, wird nach dem n-ten mal dieser Eintrag gültig

Fetchmail als Daemon

Um Fetchmail im Hintergrund als Daemon laufen zu lassen muss man die Datei /etc/default/fetchmail bearbeiten:

sudo nano /etc/default/fetchmail

Hier muss der Eintrag START_DAEMON auf yes gesetzt werden

# Declare here if we want to start fetchmail. 'yes' or 'no'
START_DAEMON=no

Danach kann man den fetchmail Dienst starten

sudo service fetchmail start

Self Signed SSL Zertifikat

Benutzt der Quell-Server ein selbst-signiertes SSL Zertifikat muss man ein paar weitere Optionen hinzufügen.

Zuerst holt man sich das Zertifikat vom Quell-Server:

echo "quit" | openssl s_client -starttls imap -connect localhost:imap

Aus der Ausgabe kopiert man sich jetzt die Zertifikate heraus und speichert sie z.B. nach /var/lib/fetchmail/.certs/. Dabei muss für jedes Zertifikat das der Server liefert eine eigene Datei angelegt werden. Liefert der Server also ein Server Zertifikat und ein CA Zertifikat, muss man zwei Dateien anlegen:

sudo mkdir /etc/ssl/fetchmail
sudo nano /etc/ssl/fetchmail/imap.mydomain.de.pem
sudo nano /etc/ssl/fetchmail/myca.pem

Als nächstes müssen die Zertifikate gehashed werden:

cd /etc/ssl/
c_rehash fetchmail

dann die fetchmailrc ergänzen:

poll pop.provider.de with proto IMAP
   user 'account@provider.de there' with password 'geheim'
   is 'me@mydomain.de' here
   ssl sslcertck sslcertpath /etc/ssl/fetchmail sslproto ssl23

Jetzt sollte das selbstsignierte Zertifikat ordnungsgemäß funktionieren.

MD5 Fingerprint

Ich habe noch eine Variante gefunden bei der man den MD5 Fingerprint benutzt. Hab den Ansatz nicht weiter verfolgt, da die andere Version funktioniert. Musste aber ne Weile suchen wie man den MD5 Fingerprint bekommt. Also, für alle die, die wissen wollen wie man den MD5 Fingerprint bekommt:

echo "quit" | openssl s_client -connect imap.meinedomain.com:993 | sed -n /BEGIN/,/END/p | openssl x509 -noout -fingerprint

Oder falls man das Serverzertifikat schon gespeichert hat mit

openssl x509 -in my-srv-cert.pem -noout -fingerprint

Dieser kommt als weitere Option zum poll - Eintrag:

sslfingerprint '4A:5E:2F:7E:57:12:0A:85:66:9D:11:24:0E:9E:36:1A'

TLS verwenden

Die Verwendung des SSL-Ports 993 für IMAP ist ja inzwischen deprecated. Stattdessen soll man den Port 143 mit TLS verwenden was ebenfalls zu einer SSL-verschlüsselten Verbindung führt. Um Mails von einem Server mit TLS abzuholen benötigt man eine solche Konfiguration:

poll www.provider.de with proto IMAP
  user 'account@meinedomain.de' there with password 'geheim'
  is 'me@meinedomain.de' here
  nokeep fetchall
  sslcertck sslcertpath "/etc/ssl/fetchmail"
  sslproto TLS1

Wobei die öffentlichen Server Zertifikate im Verzeichnis /etc/ssl/fetchmail zur Verifizierung liegen müssen.

Blog

Kmoser's Tech-Blog