[Raspberry-mailserver] – 5. Dovecot (IMAP Server)

Posted in RaspberryPI with tags , , , , , on Januar 10, 2014 by Predictor

Die Linux Philosophie ist ja „ein Programm pro Aufgabe“.
Soll bedeuten:
Unter Windows gibt es Exchange der macht alles (versenden, abholen, …).
Bei Linux gibt es z.B Exim nur zum mails versenden (oder sendmail oder oder -> einfach mal nach MTA – Mail Transfer Agent googeln).

Ich verwende für meinen Mailserver:

  1. Eximzuständig für den Mailversand
  2. Dovecotlokaler IMAP Server
  3. Fetchmailabholung der mails beim provider
  4. RoundcubeGUI für Dovecot

Dovecot (IMAP Server)
Dovecot wird als lokaler IMAP Server eingesetzt.

Die Installation erfolgt ganz einfach per aptitude

sudo modprobe ipv6sudo aptitude install dovecot-imapd

Die erste Zeile ist es nötig um das IPv6 Kernel Modul nachzuladen (sonst wird die Installation fehlschlagen).
Anschliesend die IPv6 Unterstüzung wieder abschalten (wer IPv6 haben will muss das Modul in die /etc/modules eintragen) indem die Datei /etc/dovecot/dovecot.conf um folgende Zeile erweitert wird:

listen = *

Nun sollte sich auch schon der Mailclient auf den RasPI verbinden können.
Es wird sowohl unverschlüsselt Port 143 als auch SSL-Port 993 unterstützt (allerdings wird bei SSL eine Warnung angezeigt da dass Zertifikat selbst generiert ist.
Anzeigen des Zertifikats: openssl x509 -fingerprint -in /etc/dovecot/dovecot.pem -noout

Nach abgeschlossener Installation, wenn mehrere Benutzer ihre mails auf dem Raspberry abspeichern wollen, müssen für jeden Mailbenutzer ein eigenes Linux Benutzerkonto angelegt werden:

sudo useradd -m <USERKURZZEICHEN>
sudo passwd <USERKURZZEICHEN>

Wenn man den User nicht mehr möchte geht er einfach zu löschen mittels (ACHTUNG alle Daten inkl. mails werden ebenfalls gelöscht)

sudo userdel -r <USERKURZZEICHEN>

Umstellen von Mbox auf maildir++

Mit dem Mbox Format (musste gewählt werden aufgrund der Exim konfiguration) können keine Unterordner angelegt werden.
Die dies aber wohl jeder gerne haben möchte, muss auf maildir++ umgestellt werden.
Wenn nun z.B. der Unterordner „GMX“ angelegt wird, werden die mails in der Datei „~/mail/.INBOX.GMX“ gespeichert.
Dazu einfach folgendes in die Datei /etc/dovecot/conf.d/10-mail.conf eintragen:

mail_location = mbox:~/mail:LAYOUT=maildir++:INBOX=~/mail/.INBOX: CONTROL=/var/mail/control/%u:INDEX=/var/mail/indexes/%u

Im dovecot wiki kann man nachlesen was die einzelnen Parameter zu bedeuten haben.
LAYOUT bedeutet das dovecot das format maildir++ verwendet denn das format mbox unterstüzt keine Unterordner.

Da wir nun dovecot gesagt haben metadaten in /var/mail/control und /var/mail/indexes abzulegen, müssen wir diese Ordner auch anlegen (und Berechtigungen darauf vergeben):

sudo mkdir /var/mail/control
sudo chmod 777 /var/mail/control
sudo mkdir /var/mail/indexes
sudo chmod 777 /var/mail/indexes

Danach Dovecot neu starten

Dovecot kann mit folgendem Befehl neu gestartet werden:

sudo service dovecot restart

debugging

Wer hier noch liest ist entweder ganz genau oder hat ein Problem – irgendwas funktioniert nicht.
Jetzt gehts also los mit debuging

Schritt 1 Browser öffnen und den Artikel WhyDoesItNotWork lesen, danach in einer extra Konsole die Ausgaben mitlesen:

tail -f /var/log/mail.log

Wer etwas mehr ausgaben braucht (was ich benötigte) der ergänzt die /etc/dovecot/dovecot.conf um die folgenden Einträge:

auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes

Weitere debugging Tipps fand ich bei workaround.org, natürlich im dovecot wiki und zu meinem speziellen Problem (A BAD Invalid characters in atom) im debianforum.

Wer prüfen möchte ob mails in dem richtigen File abgelegt werden, der kann auch mal mit pico die entsprechende datei öffnen:

pico /home/mail

Tipps & Tricks

Beim Linux Usernamen keine groß und kleinschreibung verwenden!!!

Ich testete Dovecot mit Outlook 2003 zusammen und hatte richtig viel Spass bei der Fehlersuche – immer die Meldung invalid password.
Im Log dann der Hinweis „A BAD Invalid characters in atom
LÖSUNG: User weglöschen und mit nur kleinschreibung neu anlegen!

Fehlermeldungen

Wer die Meldung erhält dass die dovecot.index.log nicht angelegt werden konnte, muss noch mal weiter oben den Teil „Umstellen von Mbox auf maildir++“ lesen.

Fehlermeldungen bzgl. „user is not in group mail“ lassen sich mit folgendem Befehl lösen:

sudo usermod -aG <GRUPPENNAME> <BENUTZERNAME>

Bedeutung der Tilde „~

In der Konfiguration taucht immer wieder “~” auf -> hier die Bedeutung:

It’s a Bash feature called „tilde expansion„. It’s a function of the shell, not the OS. You’ll get different behavior with csh, for example.

To answer your question about where the information comes from: your home directory comes from the variable $HOME (no matter what you store there), while other user’s homes are retrieved real-time using getpwent(). This function is usually controlled by NSS; so by default values are pulled out of /etc/passwd, though it can be configured to retrieve the information using any source desired, such as NIS, LDAP or an SQL database.

Tilde expansion is more than home directory lookup. Here’s a summary:

~              $HOME
~fred          (freds home dir)

~+             $PWD   (same effect as ./)
~-             $OLDPWD (your previous directory)
~1             `dirs +1`
~2             `dirs +2`
~-1            `dirs -1`

dirs and ~1, ~-1, etc., are used in conjunction with pushd and popd.

Outlook und IMAP

Ich verwendete zum testen Outlook 2003. Gelöschte mails wurden darin leider nur durchgestrichen dargestellt.
Wie dies bei den verschiedenen Outlook Versionen umgestellt werden kann steht im Blogpost Outlook und IMAP

Aktueller Stand

17.01.2014
Nach dem ändern des Usernamens und dem anpassen des Speicherpfades werden die Fehlermeldungen weniger.
Danke an dieser Stelle meinen fleisigen Mitstreitern Tolik und BioS.

[Raspberry-mailserver] – 4. Exim (Mail Transfer Agent)

Posted in RaspberryPI with tags , , , , on Januar 8, 2014 by Predictor

Die Linux Philosophie ist ja „ein Programm pro Aufgabe“.
Soll bedeuten:
Unter Windows gibt es Exchange der macht alles (versenden, abholen, …).
Bei Linux gibt es z.B Exim nur zum mails versenden (oder sendmail oder oder -> einfach mal nach MTA – Mail Transfer Agent googeln).

Ich verwende für meinen Mailserver:

  1. Eximzuständig für den Mailversand
  2. Dovecotlokaler IMAP Server
  3. Fetchmailabholung der mails beim provider
  4. RoundcubeGUI für Dovecot

Exim (MTA)
Exim wird als Mail Transfer Agent (MTA) eingesetzt.

Die Installation erfolgt ganz einfach per apt-get

sudo apt-get install exim4

Nach der Installation folgt die Konfiguration

sudo dpkg-reconfigure exim4-config

Die Konfiguration ist Menügeführt

Exim_1

1.

Exim_2

2.

Exim_3

3.

Exim_4

4.

Exim_5

5.

Exim_6

6.

Exim_7

7.

Exim_8

8.

Exim_9

9.

Exim_10

10.

Exim_11

11.

Exim_12

12.

Exim_13

13.

Exim_14

14.

Exim_15

15.

Exim_16

16.

Exim_17

17.

Exim_18

18.

 Quelle: Forum-raspberrypi.de

Nach der Konfiguration noch in der Datei: /etc/exim4/passwd.client die Zugangsdaten für den Provider SMTP Server im folgenden Format eintragen:

Mail.example.com:username:password

Um das Passwort wie üblich per SSL verschlüsselt zu übertragen, muss noch die Datei: /etc/exim4/exim4.conf.localmacros angelegt werden. Dazu einfach wie folgt pico öffnen:

sudo pico /etc/exim4/exim4.conf.localmacros

Und darin folgende Zeile eintragen:

MAIN_TLS_ENABLE = 1

Jetzt kann man auch schon testen mit:

echo „Hallo Welt. Das ist ein Test“ | mail -s Testmail email@example.com

Dann sollte die mail auch schon durchgehen, falls nicht in einer zweiten Session mal folgendes eingeben:

tail -f /var/log/exim4/mainlog

Exim kann mit folgendem Befehl neu gestartet werden:

sudo /etc/init.d/exim4 restart

Tipps & Tricks

zur Fehlersuche und auch eine Installationsanleitung ist zu finden auf der Homepage von Tilo Baumann

Bei mir funktionierte der mailversand nicht, im Log war immer nur die unten stehende Fehlermeldung zu sehen

Exim defer (-53): retry time not reached for any host

Die Tipps von livebook.in oder megaharts brachten auch keine besserung.
Per Telnet konnte ich wie im Post von yuki-onna beschrieben, den Server aber erreichen.
Die Lösung brachte dann folgendes Kommando, das ich im debianforum gefunden habe (ja auch bei exim ist der befehl sendmail):

sudo sendmail -qff

Exim4: Kleines Mailqueue HowTo

Eine super Übersicht der Exim Befehle (um z.B. eine frozen mail zu löschen ist im Blog von Florian Fritsch zu finden.

Aktueller Stand

10.01.2014
Ich bekomme Stand jetzt noch keinen Versand hin da mich wohl kein Server relayen lässt.

23.01.2014
Nachdem ich nun endlich einen Server habe der mich relayen lässt – schaut es schon viel besser aus – noch etwas Feintuning (Absenderadresse usw) dann sollte es passen.

[Raspberry] – 3. vorbereitungen für die installation der benötigten Programme

Posted in RaspberryPI with tags , , , on Januar 6, 2014 by Predictor

Da wir nun ein „nacktes“ Linux am laufen haben, wollen wir ja auch Programme installieren.
Da ich meine erste Himbeere als Mailserver einsetzen will, werde ich später die Installation und konfiguration der benötigten Tools beschreiben.

Grundlegend noch angemerkt -> das meiste muss auf dem Raspberry per Konsole (z.B. Putty) geändert werden, dafür braucht man einen Editor (VI findet sich auf allen Linux Systemen ist aber sehr „eigenwillig“ zu bedienen, deswegen kann man auch Pico verwenden wenn verfügbar).

Pico Bedienung:
Einfach bei google mal suchen
TIP: das Zeichen „^“ bedeutet … auf <STRG> hämmern (und halten).

Raspberry auf feste IP Adresse umstellen
Als nächstes sollte man dem Raspberry eine feste IP verpassen (geht alternativ auch mit einer DHCP-Reservierung).

Zum editieren der Netzwerk config folgendes eingeben:

sudo pico /etc/network/interfaces

Die DHCP-Konfiguration versteckt sich hinter folgender Konfigurationszeile:

Iface eth0 inet dhcp

Für eine statische IP muss „dhcp“ in „static“ geändert werden, darunter dann die IP, Subnet und das Standard Gateway:

Iface eth0 inet static
address 192.168.0.5
netmask 255.255.255.0
gateway 192.168.0.1

Die IP-Adresse des DNS Servers wird hier eingetragen (auch wieder mit sudo pico …) – dies wird evtl. der Router sein

sudo pico /etc/resolv.conf

In der Zeile:

Nameserver 192.168.0.1

Danach noch ein Neustart mittels:

sudo reboot

Jetzt sollte der Raspberry unter der neuen IP erreichbar sein (wenn nicht entweder alte IP versuchen oder das erste mal das vorher erstellte Image wieder auf die SD-Karte schreiben.
Schadet ja nicht dass auch gleich mal getestet zu haben.
😉

[Raspberry] – 2. installation von Raspbian und erstellen eines Backups

Posted in RaspberryPI with tags , , , on Januar 4, 2014 by Predictor

Nachdem es sehr viele gute Seiten bzgl. der Installation von Raspbian gibt, brauche ich nicht auch noch anfangen was zusammenzuschreiben.

Installation Raspbian
Zur Installation einfach dem Blogpost von Jan Karres folgen, danach einen Blick auf die Anleitung des RaspberryCenter.de werfen.
Im zweiten Post wird beschrieben wie der RasPI auf deutsch umgestellt wird und WIE EIN UPDATER INSTALLIERT WIRD!!!

Update Raspbian
Nach der installation der updatescripte wie im RaspberryCenter beschrieben, einfach alle paar Tage folgende Befehlssequenz eingeben:

  1. sudo rpi-update
  2. sudo apt-get update
  3. sudo apt-get upgrade
  4. sudo reboot

Backup Image erstellen
For a english Version have a look at “Quelle” (that means list of references)

Wenn man seinen Raspberry Pi einmal fertig konfiguriert hat und alles läuft wie es soll hat man die Arbeit erst geschafft und das Vergnügen beginnt. Jedoch findet man immer wieder neue Anwendungen, die man einmal auf seinem Raspberry Pi ausprobieren möchte und ehe man sich versieht, hat man das Betriebssystem mal wieder zerschossen oder zugemüllt. Folglich ist eine Neuinstallation des Betriebssystems auf der Tagesordnung und damit Verbunden ist natürlich auch das erneute Einrichten aller gewünschten Programme.

Es gibt jedoch die Möglichkeit den Stand des Betriebssystems als Image festzuhalten und später, wie bei einer Neuinstallation, das eigene Image wieder zu installieren.
Wie dies unter Windows, Linux und Max OS X funktioniert, erkläre ich im Folgenden:

Windows
Step 1
Zunächst müssen wir Win32 Disk Imager unter http://sourceforge.net/projects/win32diskimager/files/latest/download herunterladen und entpacken.
Step 2
Im Win32 Disk Imager müssen wir nun im Feld Image File den Pfad samt Dateinamen angegeben, wo das Image gespeichert werden soll, das Laufwerk auf dem die SD-Karte eingebunden ist wählen und auf Read klicken.

Linux / Mac OS X
Step 1
Unter Linux und Mac OS X ist es recht einfach mittels dd ein Image seiner SD-Karte zu erstellen. Dabei muss man /dev/sdx durch den Zugriff auf die SD-Karte ersetzen (bei Mac OS X für gewöhnlich /dev/diskx) und /path/images.img durch den Pfad samt Dateinamen wo das Image gespeichert werden soll.

dd if=/dev/sdx of=/path/images.img bs=1M

Fertig! Nun ist der aktuelle Stand des Betriebssystems gesichert, man kann unbesorgt neue Programme ausprobieren und im Bedarfsfall einfach das gesicherte Image wieder einspielen.

Quellen:
Blogpost von Jan Karres
English version: lifehacker.com

Auf dem RasPI einloggen mit Putty
Hier geht es darum, wie man sich mit Putty über SSH auf dem Pi einloggen kann.

Zuerst müsst ihr putty.exe hier herunterladen: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Putty muss nicht installiert werden, sodass man es direkt starten kann.

Um euch nun mit dem Pi zu verbinden, gebt ihr in das Feld „Hostname“ „raspberry“ ein und klickt auf open.
Alternativ könnt ihr auch die direkte IP-Adresse des Pi eingeben.

RasPI-Putty

Tipps:

  • in der Konsole kann per Rechtsklick Daten aus der Zwischenablage eingefügt werden (einfache Copy-Paste von Windows nach Linux)
  • wenn in der Konsole Text markiert wird, landet dieser automatisch in der Zwischenablage
  • damit die Umlaute in der Konsole korrekt angezeigt werden, muss unter Window -> Translation „Remote character set“ auf „UTF-8“ umgestellt werden
  • unter Connection -> Data könnt ihr bei „Auto-login username“ „pi“ eintragen, sodass die Abfrage des Benutzernamens übersprungen wird
  • diese Einstellungen können auch zusammen mit dem hostname als Session gespeichert werden, sodass die Einstellungen nicht jedes mal aufs Neue vorgenommen werden müssen.

Quelle: http://jansepke.blogspot.de/2013/05/putty.html

[Raspberry] – 1. Schritte mit RasPi

Posted in RaspberryPI with tags , , , , , on Januar 2, 2014 by Predictor

Es ist soweit mein RaspberryPi ist da, mit im Gepäck eine 32GB SD Karte da er meinen alten Exchange Server ablösen soll (erlösen trifft es eher).

Bevor man lustig zu bestellen anfängt sollte man sich etwas damit beschäftigen was für eine Karte man den hinterher verwenden will.
Aktuell habe ich eine SanDisk 32GB SDHC (class10) drinnen.
Da ich das Problem HATTE dass der pi ab und zu keine befehle mehr ausführte (aber einloggen und ping war Problemlos möglich) habe ich mich leider erst hinterher mit den eigenheiten der diversen SD Karten beschäftigt.
Am Netzteil sollte es bei mir nicht liegen und externe Hardware ist auch nicht angeschlossen.

Hätte ich mal lieber vorher hier geschaut: http://raspberrycenter.de/handbuch/sd-karten-raspberry-pi, denn ich habe mir als Zweitkarte eine Transcend 32GB SDHC (class 10) gekauft – die soll scheinbar Probleme verursachen. Aber wenn man ein wenig googelt findet man auch Seiten die sagen es geht – also macht wohl nur testen schlau.

Eines noch zu den Aussagen dass nur bis zu 32GB Karten verwendet werden können => dies ist falsch!
Es können nur bis zu 32GB SDHC Karten verwendet werden, da es ganz simpel keine größeren gibt!!!
Alles was größer ist sind SDXC Karten 🙂
Also es darf auch größer sein, ich habe beim googlen z.B. gelesen: „Die SanDisk Ultra SDXC 3A114807 funktioniert problemlos mit Raspbian.“
Das Netzteil muss aber wohl gut sein, Übertakten geht scheinbar dann nicht mehr und es müssen irgendwelche Kernel Parameter gesetzt werden.

Dies einfach nur als Info – getestet habe ich es logischerweise nicht, kämpfe ja noch mit den Anfängen.

UPDATE 02.01.2014
Bei mir hat es geholfen „boot_delay=1“ zu setzen (siehe elinux WIKI Stichwort „Rainbow Screen“ oder „Coloured splash screen„).
Damit bootet nun auch die Transcent Karte (die auch noch DEUTLICH schneller ist als die SanDisk und das Image auf der SanDisk friert nicht mehr ein (kann aber auch daran liegen dass das Image neu aufgespielt wurde).

[Hausautomation] – Infrarot Steuerung per FHEM (und/oder LAN)

Posted in Hausautomation with tags , , , , , , , on Juni 10, 2013 by Predictor

Um Geräte mit einer Infrarot Fernbedienung zu steuern gibt es diverse Geräte.

Zum einen von ELV den FS20 IRF, dieser hat aber den „Nachteil“ dass es eben ein FS20 Gerät ist. Wer nun aber kein FS20 besitzt braucht eine Alternative.

Ich bin heute über den iTach von Roomie gestolpert – einfach mal bei roomieremote.com reinschauen.

Hier werden Geräte vertrieben die unter anderem IR per LAN oder WLAN bieten.

Im Optimalfall ist das Gerät in der compatibility list aber selbst wenn nicht kann man die Codes anlernen.
Der große Vorteil zum FS20IRF ist (wenn die Originalfernbedienung defekt oder verloren gegangen ist), das eben schon Codes vorgegeben sind – somit spart man sich den Nachkauf der Originalfernbedienung.

 

Weiter sind dort Geräte zu finden die LAN auf seriell können.

[Dreambox] – SHOUTcast Webradio Plugin

Posted in Dreambox with tags , , , on Mai 27, 2013 by Predictor

Da es ja für die 7025+ nur OE 1.6 basierende Images gibt, muss man leider mit den PlugIns die es noch dafür gibt vorlieb nehmen.

Um Internetradio zu hören wäre das PlugIn InternetRadio von Dr.Best meine erste Wahl gewesen da es ja auch ein Webinterface bietet (dieses sich ja dann in FHEM integrieren lassen hätte) ABER wie oben geschrieben – man muss hald nehmen was man bekommen kann.

Nach längerer suche habe ich mich für das PlugIn SHOUTcast entschieden (dies war der vorgänger für das PlugIn „InternetRadio“).
Die letzte SHOUTcast Version ist vom 04.01.2010

Leider lädt das PlugIn (wie hier nachzulesen) keine Senderlisten mehr herunter, aber das Plugin an sich funktioniert weiter.

Wie bekomme ich nun Sender in mein Plugin?

Möglichkeit A
Manuelles bearbeiten der Favoriten:

Öffne (mit einem linux-tauglichen Editor!) auf der Box die Datei /usr/lib/enigma2/python/Plugins/Extensions/SHOUTcast/favorites.user

Die erste Zeile gibt die Anzahl der Favoriten an (bedenke da bei „0“ angefangen wird zu zählen ist die Zahl 1 höher als der letzte Favorit),
darunter folgen dann die Liste der gewünschten Radiostations

config.entriescount=3
config.Entries.0.text=Top
config.Entries.0.type=genre
config.Entries.0.name=Top
config.Entries.1.text=http://netshow.play.cz:8000/radio7cz128.ogg
config.Entries.1.type=url
config.Entries.1.name=Test
config.Entries.2.text=http://www.top100station.de/switch/r3472.pls
config.Entries.2.audio=audio/mpeg
config.Entries.2.type=pls
config.Entries.2.name=top 100 station – Germanys No.1 Web Hit Station
config.Entries.2.bitrate=128

Einfach die Datei wieder speichern, Plugin aufrufen, und in der Favoritenliste den Stream auswählen.
Ich habe mit dem Dreambox Control Center (dcce2_150.exe) die Datei direkt auf der Box bearbeitet.

Da die Datei doch etwas verstekt ist, kann man sich mit folgendem Befehl einen Symlink nach /etc erstellen

ln /usr/lib/enigma2/python/Plugins/Extensions/SHOUTcast/favorites.user /etc/SHOUTcast.fav

Möglichkeit B
Senderliste (gemini_netcast.xml) herunterladen und/oder bearbeiten:

In diesem Thread bei IHAD kann man sich eine Senderliste herunterladen.
Die Senderliste sollte unter /etc/Enigma2 liegen und sieht so aus:

<?xml version=“1.0″ encoding=“UTF-8″ ?>
< stationlist>
<station name=“DEPECHE MODE AB RADIO“ mt=“audio/mpeg“ id=“http://mp3stream4.abradio.cz:8000/depeche128.mp3&#8243; br=“128″ genre=“VA“ ct=““ lc=““> </station>
<station name=“SlayRadio“ mt=“audio/mpeg“ id=“http://relay4.slayradio.org:8000&#8243; br=“128″ genre=“VA“ ct=““ lc=““> </station>
<station name=“Ericade Amiga Network“ mt=“audio/mpeg“ id=“http://83.227.137.196:8000&#8243; br=“128″ genre=“VA“ ct=““ lc=““> </station>
< station name=“DreamPowerRadio high“ mt=“audio/mpeg“ id=“http://dpr.gmc.to:64000/stream&#8220; br=“128″ genre=“VA“ ct=““ lc=“2531″> </station>
< station name=“DreamPowerRadio low“ mt=“audio/mpeg“ id=“http://dpr.gmc.to:64000/low&#8220; br=“64″ genre=“VA“ ct=““ lc=“2531″> </station>
< station name=“Rock Antenne“ mt=“audio/mpeg“ id=“http://mp3.webradio.rockantenne.de:80&#8243; br=“128″ genre=“Classic Rock“ ct=““ lc=“2531″> </station>
< station name=“Antenne Bayern“ mt=“audio/mpeg“ id=“http://mp3.webradio.antenne.de:80&#8243; br=“128″ genre=“Classic Rock“ ct=““ lc=“2531″> </station>
< /stationlist>

Wie die xml nun genau heisen soll kann ich nicht sagen da ich die Möglichkeit A einsetze und dies auch nicht getestet habe.
Folgende Namen habe ich in div. Foren schon gelesen (unterschiedlich ob es eine „genrelist“ oder „stationlist“ ist):

  • webradio.xml
  • newnigma2-webradio.xml
  • gemini_netcast.xml