[Hausautomation] – mit FHEM PC starten / herunterfahren

Posted in Hausautomation, Plex / Kodi on April 23, 2017 by Predictor

 

Nachdem ich gerade meinen Plex Client in FHEM einbinde, musste ich mich auch mit dem Thema einen RaspBerry per FHEM herunterfahren zu können beschäftigen.
Ich wollte mich an den Blogpost von linuxfun halten, nur leider scheitert dies schon am Anfang, den im LibreELEC ist kein useradd integriert und auch das nachinstallieren von Paketen ist nicht vorgesehen.
Auch der Blogpost von flurweg geht diesen Weg.

 

Der Blogpost von heinz-otto sieht auch sehr vielversprechend aus – ist aber für Windows (aber auch WOL ist darin beschrieben).

 

Im FHEM Forum gibt es dazu auch ein paar Posts:
SleepOnLan – dort wird am Ende auf diesen gelösten Thread verwiesen SSH-Probleme

Auch in einem anderen Thread wird der Weg über Keys gegangen, in diesem Thread wird auf diesen verwiesen: OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu

Also werde ich mich wohl mit der Key Geschichte noch beschäftigen müssen.

UPDATE:
Ich werde es zuerst mit dem Linux Tool sshPass versuchen.

Aber da der RasPlex ja per FHEM später sich selber den Strom abknipsen soll, muss ich mich auch noch mit der Geschichte beschäftigen dass beim Shutdown von Linux ein Script ausgeführt wird. Dieses Script soll dann im FHEM einen Timer auslösen der nach ein paar Sekunden die Steckdose abschaltet.

 

Im Blogpost von meintechblog geht es noch einen Schritt „weiter“ hier wird Plex in FHEM integriert, aber im Moment will ich ja nur ein- bzw ausschalten.
Natürlich ist auch im FHEM-Forum dazu etwas zu finden.

Hier ist noch ein Miniscript zu finden dass den Status EINES Clients ausgibt ob er gerade etwas abspielt oder eben nicht.

 

Plex Media Server (PMS)

Posted in Plex / Kodi with tags , , , on April 23, 2017 by Predictor

Wer über einen VPN Tunnel auf seinen PMS zugreifen will, braucht natürlich erst einmal einen Tunnel.

Als nächstes wird man aber fest stellen dass der Plex andere Netze (und so wird es wohl bei 99% der Tunnels sein) einfach so nicht zulässt.
Also müssen die Netze die Zugriff haben sollen freigegeben werden, dies geht in der Plex Oberfläche Einstellungen -> Netzwerk -> Liste der IP-Adressen und Netzwerke, die keine Authentifizierung benötigen

ACHTUNG:Die Netze müssen mit dem kompletten Subnet angegeben werden: ip/netmask,ip/netmask
Beispiel: 192.168.1.0/255.255.255.0,10.10.10.0/255.255.255.0

Diese und andere Einstellungen (die Teilweise nicht über die Weboberfläche zu finden sind) können auch direkt in der Config vorgenommen werden.
Je nach OS (nachzulesen HIER):

Unter Windows in der Registry:
Computer\HKEY_CURRENT_USER\Software\Plex, Inc.\Plex Media Server

Unter OS X
Using the Finder’s „Go“ menu, select Go To Folder… then enter the following in the dialog box that pops up:
~/Library/Preferences/

Unter Linux
in the Preferences.xml file in the main Plex Media Server data directory contains the corresponding settings.

Eine Liste der Settings ist auf der Plex-Supportseite zu finden

 

Plex Media Server als Dienst einrichten (Windows)

Ein Interessanter Punkt ist, Plex läuft Standardmäsig NICHT als Dienst, sprich ist kein User am Server angemeldet läuft auch Plex nicht.
Hier ist etwas Bastelarbeit gefordert – getestet habe ich das bisher noch nicht -> drei Möglichkeiten kommen imho in Betracht:

Mit Windows Boardmitteln
sc.exe
Info´s hierzu bei Microsoft, Administrator.de oder bei Dr Windows

Mit Freeware Tool
NSSM
Informationen u.a. bei ugg.li

Mit dem Plex service wrapper
Ich denke dies wird mein erster Test sein (aber zuerst bastle ich noch am Client etwas herum)
download bei github
Informationen gibt es im Plex Forum, YouTube, bei reddit-2 oder reddit-1

Automatisch in Stanby fahren und per WOL wieder aufwachen

Beim einem Blick auf den Stromzähler wird es klar – den Server 24/7 durchrennen zu lassen ist ein teurer Spass, also die Kiste soll automatisch in Standby und auch automatisch wieder aufwachen. Auch hier gibt es verschiedene Ansätze:

Per Script Plex abfragen
Wenn der Server nur als PMS verwendet wird, kann man mit einem Script Plex abfragen ob gerade etwas abgespielt wird und wenn nicht eine bestimmte Aktion (z.B. Standby) triggern.

Anhand Windows auslastung (mit Tool)
In meinem Fall wird der Server auch als Fileserver verwendet. Es werden also auch mal Daten per Share verwendet – da bekommt Plex nichts davon mit und die Script Variante würde den Server herunterfahren.
Ich habe das Freeware Tool WinOFF von ampsoft verwendet.
Das schöne hierbei ist, das der Parameter „Netzwerkauslastung“ zur Verfügung steht.
Wenn also die Netzwerkauslastung 30min lang unter 30kb ist UND der Benutzer 45min keine Eingaben macht, fährt der Server in Standby (Hibernate funktioniert mit WOL nicht).

[Hausautomation] – fhem auf Fritz!box installieren

Posted in Computer & Netzwerke, Fritz!Box, Hausautomation, RaspberryPI with tags , , on November 19, 2015 by Predictor

Ich bin heute zufällig über einen interessanten Post gestolpert.
In diesem wird beschrieben wie FHEM ein Telefon anrufen kann um z.B. eine Türklingel zu melden.

 

http://www.jens-bretschneider.de/fhem-ruft-fritzbox/

[Hausautomation] – fhem auf Fritz!box installieren

Posted in Computer & Netzwerke with tags , on Februar 17, 2014 by Predictor

Eigentlich habe ich seit Feb 2012 FHEM produktiv im Einsatz, zu dieser Zeit entstand auch der Post „[Hausautomation] – Step1 – fhem auf Fritz!box installieren (Teil6)“ – warum also dieser Titel?
Wie im letzten Post [FritzBox7390] OpenVPN geschrieben, hatten sich nach dem update auf FritzOS 6.0.3 ein paar Dienste verabschiedet. So auch FHEM.
Da ich keine Lust auf Fehlersuche habe – einfach …

Backup machen und FHEM reinstallation

  1. der einfachkeit halber den ganzen FHEM Ordner per ftp weg kopiert
  2. von der FHEM Homepage das aktuelle Image heruntergeladen
  3. per Firmware update das Image installiert
  4. die fhem.cfg aus dem Backup wieder hergestellt
  5. die Logfiles aus dem Backup zurückgespielt
  6. pauschal updates in fhem gefahren

Fertig die Laube

Problem solved
:-)

[FritzBox7390] OpenVPN

Posted in Fritz!Box with tags , , , , on Februar 15, 2014 by Predictor

Seit Oktober 2010 war mein openVPN auf meiner 7390 aktiv und das ohne Probleme.
Auch diverse Firmware updates der FritzBox hat die openVPN konfig nicht ins schleudern gebracht.

Das update auf FritzOS 6.00 habe ich nicht gemacht, ich bin auf 5.50 geblieben.
Da ich den security patch in FritzOS 06.03 aber haben wollte, habe ich (weil in der Vergangenheit ja immer alles easy war) einfach mal upgedatet …
… das war jetzt evtl. nur meine zweitbeste Idee  😦 danach war es nichts mehr mit openVPN.

FEHLERSUCHE:

Als erstes mal die Datei startfhem im fhem Ordner zerlegen und step by step in der Konsole ausführen:

  • /usr/sbin/telnetd -l /sbin/ar7login
  • mkdir /var/tmp/vpn
  • mknod /var/tmp/tun c 10 200
  • /var/InternerSpeicher/OpenVPN/openvpn –cd /var/tmp/vpn –daemon –config /var/InternerSpeicher/OpenVPN/server.conf –script-security 2

OK zu beginn alles wie erwartet … File existsFile exists
doch dann can’t handle reloc type 0x2f
So sollte das nicht sein -> kurze Recherche, und im ip-phone-forum schrieb er13:

Ursache – AVM ist auf NTPL-based threading support umgestiegen. Damit sind die meisten dynamisch gelinkten Binaries inkompatibel zu 06.00

In diesem Post war auch gleich der Link zu den aktuellen Binaries (Ver 2.3.2) oder einfach mal in einer Suchmaschine nach openvpn_2.3.2-mips-openssl-static.gz suchen.
Ein Blick auf die openVPN Homepage ist auch hilfreich um die aktuelle Version herrauszufinden (ob die dann auch bereits für eine FritzBox portiert wurde ist etwas anderes).

OpenVPN: OpenSSL vs PolarSSL

Wer sich jetzt wundert warum dort 2 Links zu finden sind:

Dem geht es wie mir. Im Heise Forum ist zu lesen:

ich habe in einem beitrag im neuen linux-magazin (4/13, s.10) gelesen, dass OpenSSL 2.3 nicht mehr auf OpenSSL, sondern auf PolarSSL aufsetzt.
Was ist der Vorteil von PolarSSl gegenüber OpenSSL?

nach http://en.wikipedia.org/wiki/Comparison_of_TLS_implementations ist es wohl kleiner, kann aber weniger.

wie ist es mit der interoperabilität? Können ältere OpenVPN-clienst mit neuen servern, und anders rum, verbindungen aufbauen?

Fragen über Fragen.

Ich bleibe einfach mal bei openssl

Kurz noch geprüft ob die ar7.cfg noch meinen modifizierten Eintrag hat:

grep 443 /var/flash/ar7.cfg

bestätigte -> der openVPN Port ist noch eingetragen

„tcp 0.0.0.0:XXX 0.0.0.0:XXX 0“,

XXX -> openVPN Port (Standard 1194)
Der vollständigkeit halber mit vi die startup.sh im OpenVPN Ordner überprüft -> passt auch noch:

# Start des telnet-daemons
echo Starting telnetd
/usr/sbin/telnetd -l /sbin/ar7login

# warten, bis das DSL da ist
echo Waiting for internet connection
while !(ping -c 1 http://www.google.de); do
sleep 5
done

mkdir /var/tmp/vpn

# create tun-device
mknod /var/tmp/tun c 10 200

# start OpenVPN (Dateinamen ggf. anpassen)
/var/InternerSpeicher/OpenVPN/openvpn –cd /var/tmp/vpn –daemon –config /var/InternerSpeicher/OpenVPN/server.conf –script-security 2

Jetzt noch die debug.cfg prüfen dann sollte so ziemlich alles gecheckt sein.

Wie oben geschrieben verwende ich die openssl und da ich eine 7390 habe logischerweise als Mips.
Flugs per ftp (übertragungsmethode „binary“) die das binary hochgeladen und mit chmod ausführen erlaubt.

Leider immer noch keine Verbindung – also noch einmal das startup.sh Befehl für Befehl ausgeführt.
Beim eigentlichen start von openVPN erhielt ich folgende Fehlermeldung:

Options error: Unrecognized option or missing parameter(s) in /var/InternerSpeicher/OpenVPN/server.conf:6: port-share (2.3.2)
Use –help for more information.

Es scheint dass die option port-share (die es in openVPN 2.0.5 noch gab) in der 2.3.2 entfernt wurde.

openVPN config Parameter

nachdem port-share zu einem Fehler führte dachte ich es wäre nicht schlecht mal die server.conf zu checken.
Sehr Hilfreich ist das openVPN WIKI und evtl noch die openVPN man Page.

Jetzt noch mal testen und erfreulicherweise meldet jetzt die Konsole:

Sun Feb 16 22:18:21 2014 Listening for incoming TCP connection on [undef]
Sun Feb 16 22:18:21 2014 TCPv4_SERVER link local (bound): [undef]
Sun Feb 16 22:18:21 2014 TCPv4_SERVER link remote: [undef]
Sun Feb 16 22:18:21 2014 Initialization Sequence Completed

Auch der test vom Client aus bestätigte -> alles wieder in Butter!!!

Problem solved
🙂

Eine interessante Seite finde ich xobztirf.de, dort sind ein paar nette Tipps zur FritzBox zu finden.
Unter anderem ist auf der Seite auch ein Pintest-Script zur überwachung anderen Servern zu finden.

[Raspberry-mailserver] – 6. Fetchmail (mail collector)

Posted in RaspberryPI with tags , , , , , on Januar 12, 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

Fetchmail (mail collector)
Fetchmail wird zum abholen der mails vom Provider eingesetzt.

Die Installation erfolgt ganz einfach per aptitude

sudo aptitude install fetchmail procmail

Nach abgeschlossener Installation muss im Homedrive „/home/<USERNAME>“ jedes Mailusers (diese wurden ja nach der Dovecot Installation angelegt) folgende Datei angelegt werden:
Am besten mit dem entsprechenden User anmelden.

pico /home/<USERNAME>/.fetchmailrc

mit folgendem Inhalt (ACHTUNG zum testen die Option keep setzen – so werden die mails beim Provider nicht gelöscht):

poll imap.gmail.com
protocol IMAP
user ‘maxmuster@googlemail.com’
is mmuster
pass ‘123456’
folder INBOX
ssl
mda ‘formail -c -a Date: >> ~/mail/.INBOX.Gmail’
keep

ODER

#.fetchmailrc
#Server GMX with IMAP
poll imap.gmx.de protocol IMAP:
username „maxmuster@gmx.de“ password „123456“ is „mmuster“ here;
folder INBOX
ssl

#Optionen
# formail als mda – formail optionen
#http://www.man-online.org/page/1-formail/
mda „formail -c -a Date: >> ~/mail/.INBOX.GMX“
keep

… to be continued!!!

Tipps & Tricks

ich musste das Verzeichnis /mail/ manuell anlegen, danach werden die mails auch in die Datei geschrieben.
Eine Installationsanleitung und Tipps sind zu finden bei tuxhausen.de

Datum und Uhrzeit werden geändert (wann die mail vom Provider abgeholt wurde)

Datum und Uhrzeit „Erhalten“ entspricht nicht mehr der Uhrzeit zu der die mail beim eigentlichen Provider ankam.
Laut einem Post in linux.debian.user.german setzt derMTA (in meiner konfig. Exim) die Zeit und verursacht das Problem.

Aus der Fetchmail-FAQ:
O10: Why is the received date on all my messages the same?
A: This is a design choice in your MTA, not fetchmail. It’s taking the
received date from the last Received header.

Die Lösung ist relativ simpel wenn man weis nach was suchen.
Es handelt sich ganz einfach um einen BUG von fetchmail, der auch in der man Page von formail beschrieben ist.

BUGS
       When formail has to generate a leading `From ' line  it  normally  will
       contain  the  current date.  If formail is given the option `-a Date:',
       it will use the date from the `Date:' field in the header (if present).
       However,  since formail copies it verbatim, the format will differ from
       that expected by most mail readers.

LÖSUNG
mda „formail -c -a Date: >> ~/mail/.INBOX.GMX“

anstelle von
mda „formail -c >> ~/mail/.INBOX.GMX“

Aktueller Stand

10.01.2014
Die mails scheinen sauber beim Provider abgeholt zu werden, allerdings hänge ich noch an einem Problem mit Dovecot, deswegen noch nicht produktiv geschalten.

21.01.2014
Nachdem das Dovecot Problem nun gelöst ist, stelle ich fest dass die mails mit dem Zeitstempel versehen werden wenn fetchmail die mails beim Provider abgeholt hat.

 23.01.2014
Ich bin immer noch dem timestamp Problem auf der Spur, ich denke mal dass die Zeile „mda ‚formail -c >>“ eine Spur sein könnte. Denn fetchmail soll wohl nicht schuld sein.
MDA bedeutet Mail Delivery Agent – dass schreit ja fast schon danach.

 25.01.2014
Das timestamp Problem ist jetzt gelöst (und der Blogpost geändert. Es fehlte einfach der Parameter „-a“ in mda „formail -c -a Date: >>…

Outlook und IMAP

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

Da ich gerade am Mailserver aufsetzen (unter Debian) bin, stolperte ich mal wieder darüber das Outlook 2003 bei IMAP gelöschte mails nur durchgestrichen darstellt und nicht löscht.

Das Problem besteht scheinbar auch noch bei Outlook 2007, mit Outlook 2010 und höher ist dies wohl gelöst.

Es gibt aber auch für 2003 und 2007 Lösungsansätze:

Outlook 2010 & 2013

Bei diesen 2 Outlook Varianten ist die automatische Löschung bereits „ab Werk“ aktiviert, sollte also kein Problem darstellen

Outlook 2007

Unter Outlook 2007 hat Microsoft, gegenüber 2003, nachgebessert und automatisches löschen kann man nun Einstellen.
Für eine Anleitung bei office.microsoft.com nachschauen.

Outlook 2003

Durchgestrichene IMAP-Elemente endgültig löschen

Wenn Sie ein Element auf einem IMAP-Server zum Löschen markieren (durchgestrichen Dargestellt), wird es in der Kopfzeilenliste durchgestrichen angezeigt.
Um dieses markierte Elemente endgültig zu löschen, gehen Sie wie folgt vor:

  • Klicken Sie im Menü Bearbeiten auf Gelöschte Nachrichten permanent löschen

Quelle: office.microsoft.com

Um mails automatisch permanennt zu löschen braucht man ein Makro – das unten stehende wurde von der Staudte EDV Beratung geschrieben und als Freeware veröffentlicht.
Das Script und die Anleitung wurde 1 zu 1 von der Staudte EDV Beratung übernommen.

Outlook 2003 IMAP Aufräummakro, Version 1.2

Dieses Makro für Microsoft Outlook 2003 entfernt beim Verlassen und Betreten von IMAP Ordnern automatisch und endgültig die gelöschten Nachrichten. Diese Funktion ist in Outlook Express noch standardmäßig enthalten, in Outlook 2003 werden gelöschte Nachrichten nur durchgestrichen und müssen dann manuell mit „Gelöschte Nachrichten permanent löschen“ entfernt werden, was sehr mühsam ist.

Lizenzinformationen

Das Makro ist Freeware und darf als solche beliebig weitergegeben und in eigene Anwendungen integriert werden. Wir bitten nur darum, dass ein Hinweis auf die Quelle des Makros angegeben wird. Weiterhin freue ich mich, wenn Sie uns eine Nachricht im Kontaktbereich hinterlassen, wie zufrieden Sie mit dem Makro sind und wie Sie hierher gefunden haben.

DIESES MAKRO LÖSCHT DATEN – nämlich alle Nachrichten, die Sie vorher in Outlook zum Löschen markiert haben. Sie setzen das Makro auf eigene Gefahr ein – es ist zwar klein und harmlos, aber wir übernehmen keine Gewähr auf die Funktion und sind für Schäden nicht haftbar. Fragen Sie im Zweifelsfall Ihren Systembetreuer.

Technische Informationen

  • Markieren Sie den nachfolgenden Programmtext und kopieren Sie in mit Strg-C.

  • Öffnen Sie Outlook 2003 und dann im Menü Extras die Option Makro->Visual Basic-Editor.

  • Doppelklicken Sie im linken Fensterbereich „DieseOutlookSitzung“

  • Klicken Sie dann einmal ins rechte, leere Fenster und fügen Sie den Programmcode mit Strg-V ein.

  • Speichern Sie das Makro mit Strg-S.

  • Schließen Sie dann das Visual Basic Fenster.

  • Eventuell müssen Sie In Extras->Makro->Sicherheit noch die Sicherheitsstufe auf Mittel oder Niedrig stellen, damit Outlook die Ausführung des Makros erlaubt. Sie können alternativ auch ein eigenes Zertifikat erstellen und das Makroprojekt damit signieren. Dazu müssen Sie gegebenenfalls die „Digitale Signatur für VBA-Projekte“ im Office-Setup nachinstallieren. Starten Sie anschließend das Tool SelfCert.exe im Ordner „C:\Programme\Microsoft Office\Officexx“ (xx ist Ihre Programmversion, z.B. 11 für Office 2003) und folgenden Sie den Anweisungen. Danach wechseln Sie wieder in den Visual Basic-Editor und wählen im Menü Extras die Option Digitale Signatur. Über die Schaltfläche Wählen weisen Sie dem Projekt dann das selbst erstellte Zertifikat zu. Nach dem Speichern starten Sie Outlook neu. Beim ersten Ausführen werden Sie gefragt, ob Sie diesem Makro vertrauen. Markieren Sie das Kontrollkästchen Makros aus dieser Quelle immer vertrauen und wählen Sie Makros aktivieren. Beim nächsten Programmstart wird das Makro nun auch ohne Rückfragen ausgeführt werden, wenn Sie die Makrosicherheit auf Niedrig oder Hoch eingestellt haben.

  • Starten Sie Outlook neu und das Makro ist aktiv.

Danach muss noch jeder IMAP Ordner, den das Makro automatisch bereinigen soll, markiert werden. Dazu fügen Sie den Text IMAPCleanup irgendwo in die Beschreibung jedes Ordners ein, der vom Makro bedient werden soll:

  • Klicken Sie mit der rechten Maustaste auf den IMAP Ordner.

  • Wählen Sie Eigenschaften

  • Geben Sie im Beschreibungsfeld IMAPCleanup ein. Groß- und Kleinschreibung spielt keine Rolle, es kann auch anderer Text drumherum stehen.

  • Wiederholen Sie diesen Vorgang für alle anderen IMAP Ordner, ganz nach Wunsch.

Damit das Makro nicht jedes Mal eine Bestätigung einholt, bevor es die Nachrichten löscht, sollten Sie in Outlook unter Extras->Optionen->Weitere->Erweiterte Optionen->“Warnung anzeigen, bevor Elemente endgültig gelöscht werden“ das Häkchen entfernen.

Das Makro wurde für Outlook 2003 unter Windows geschrieben. Es wurde von anderen Anwendern aber auch schon erfolgreich in Outlook 2000 und Outlook 2002 (XP) eingesetzt.

Der Makro-Code

' IMAP Aufräummakro v1.2, Staudte EDV Beratung, 5. Januar 2005, www.Staudte-EDV.de
' Dieses Makro ruft beim Betreten und Verlassen eines IMAP Ordners in Outlook 2003 (OL2K3)
' automatisch die Funktion "Gelöschte Nachrichten permanent löschen" auf und zwar für alle
' IMAP Ordner, bei denen in der Beschreibung vorher der Text IMAPcleanup eingefügt wurde.
' (Groß- und Kleinschreibung spielt keine Rolle).
' Damit das Makro nicht jedes Mal eine Bestätigung einholt, bevor es die Nachrichten löscht,
' sollten Sie in Outlook unter Extras->Optionen->Weitere->Erweiterte Optionen->"Warnung anzeigen,
' bevor Elemente endgültig gelöscht werden" das Häkchen entfernen.
' Neu in Version v1.1 ist, dass beim Starten von Outlook einmal alle Ordner durchgegangen werden.
' Das war notwendig geworden, weil manche Benutzer nur dem IMAP Posteingang benutzen und
' entsprechend nie den Ordner wechseln. Sollte diese Funktion bei Ihnen Schwierigkeiten machen,
' dann löschen Sie einfach die Funktion Application_MAPILogonComplete aus dem Makro.
' In v1.2 kamen nur kleinere Fehlerkorrekturen und Optimierungen hinzu.
' Das Makro ist Freeware und darf als solche beliebig weitergegeben und in eigene Anwendungen
' integriert werden. Wir bitten nur darum, dass ein Hinweis auf die Quelle des Makros
' angegeben wird. Weiterhin freue ich mich, wenn Sie uns eine E-Mail unter info@staudte-edv.de
' senden würden, wie zufrieden Sie mit dem Makro sind und wie Sie es gefunden haben.

' IMAP Cleanup Macro v1.2, Staudte EDV Beratung, 5-January-2005, www.Staudte-EDV.de
' This macro automatically purges deleted messages from IMAP folders in Outlook 2003 (OL2K3)
' whenever the user enters or leave an IMAP folder that has been marked for cleanup. To mark
' an IMAP folder, place the text IMAPcleanup somewhere in the description field of the folder
' (not case sensitive).
' The macro may prompt you each time it tries to purge deleted messages. To stop these prompts,
' uncheck the following option in Outlook: Tools->Options->Additional->Additional options->
' show warning before deleting messages. (I'm translating this from german Outlook, as I don't
' have an english version here. If someone can tell me the exact names of the menus and options,
' I would appreciate a note so that I can update this text. Thank you.)
' New in version v1.1 is the function that walks through all folders once when Outlook ist
' started. This became necessary as some users only used the inbox folder and never switched
' folders. If this function should cause any trouble, simply remove the Application_MAPILogonComplete
' function from the macro.
' v1.2 just adds some minor error corrections an optimizations.
' This macro is freeware and may as such be distributed freely. You may also integrate it into
' your own applications, as long as a reference to the source is maintained. We would also be
' happy to hear from you, by email to info@staudte-edv.de, if you are satisfied with the tool
' and how you found it.

Option Explicit

Dim myOlApp As New Outlook.Application

Public WithEvents myOlExp As Outlook.Explorer

Public Sub Application_Startup()
  Set myOlExp = myOlApp.ActiveExplorer
End Sub

Public Sub Application_MAPILogonComplete()
  Dim appOutlook As Application, nsMapi As NameSpace, RootFolder As MAPIFolder, OriginalStartFolder

  Set appOutlook = CreateObject("Outlook.Application")
  Set nsMapi = appOutlook.GetNamespace("MAPI")

  OriginalStartFolder = ActiveExplorer.currentFolder.EntryID
  For Each RootFolder In nsMapi.Folders()
      PurgeFolderRecursively nsMapi.Folders(RootFolder.Name)
  Next
  Set ActiveExplorer.currentFolder = nsMapi.GetFolderFromID(OriginalStartFolder)
End Sub

Private Sub myOlExp_BeforeFolderSwitch(ByVal NewFolder As Object, Cancel As Boolean)
  PurgeCurrentFolder
End Sub

Private Sub myOlExp_FolderSwitch()
  PurgeCurrentFolder
End Sub

Private Sub PurgeCurrentFolder()
  Dim f As MAPIFolder
  Dim appOutlook As Application, nsMapi As NameSpace, barEdit As CommandBar
  Dim btnPurge As CommandBarButton

  Set f = myOlExp.currentFolder
  On Error GoTo skip
  If InStr(LCase(f.Description), "imapcleanup") > 0 Then
    Set appOutlook = CreateObject("Outlook.Application")
    Set nsMapi = appOutlook.GetNamespace("MAPI")
    Set barEdit = ActiveExplorer.CommandBars("Edit")
    Set btnPurge = barEdit.FindControl(msoControlButton, 5583, , , True)
    btnPurge.Execute
  End If
skip:
End Sub

Private Sub PurgeFolderRecursively(RootFolder As MAPIFolder)
  Dim currentFolder As MAPIFolder

  If InStr(LCase(RootFolder.Description), "imapcleanup") > 0 Then
    Set ActiveExplorer.currentFolder = RootFolder
    PurgeCurrentFolder
  End If

  For Each currentFolder In RootFolder.Folders
    PurgeFolderRecursively currentFolder
    DoEvents
  Next
End Sub

Quellen:
msxfaq.de
Staudte EDV Beratung

[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.
😉