Entries tagged as mail
train spamassassin running with amavis
Friday, August 7. 2015
spamassassin uses bayesian filters (think of this as a form of artificial intelligence) that can learn about what sort of emails are spam (bad) and what sort are ham (good). The key to this is a tool called sa-learn which you run against mailbox files that either contain only ham or only spam emails. This allows Spamassassin to learn which emails you think are spam. Spamassassin uses several files to store this information, kept in a hidden directory (.spamassassin)
Spamassassin with amavis uses the .spamassassin directory in the Amavis working directory. On debian I found this to be in /var/lib/amavis/
So let's assume the inbox of user USER is cleanly refined wanted mail and ll the spam has been sorted to the Junk folder. Theexample fits for a dovecot imap with Maildir and teaches Spamassassin how to sort spam from ham:
sa-learn --dbpath /var/lib/amavis/.spamassassin --dir --spam -u amavis /home/USER/Maildir/.Junk/cur
sa-learn --dbpath /var/lib/amavis/.spamassassin --dir --ham -u amavis /home/USER/Maildir/cur
Kontact, Categories, Groups and syncing to ownCloud
Thursday, August 22. 2013
I used to store my calendars, contacts, tasks at Google and sync them from there to my android phone and thunderbird/lightning on different machines running linux or win*. For a number of reasons I decided to deGoogle my data habbits and have migrated to an ownCloud server.
Google contact has a rather easy to use way of grouping contacts, actually it's more like tagging the contacts to belong to a group. Android supports those groups out of the box. Thunderbird, with the help of an addon, syncs those contacts and automagically has a mail list for each of the groups defined in Google contacts. Ease of use and clarity for data handling, each contact has the info about which mail distribution list will apply directly as a property with itself. I like that.
OwnCloud, at least with the last few versions of it's 5er, does it more or less as well as Google does. The interface may not be that refined and handy, but the structures and functionality is there, which I appreciate a lot.
Syncing to android requires 2 apps (cardDav-sync and calDAV-sync) costing few € each and then everything works nicely like it ever did. Fun.
Syncing to Thunderbird's addressbook needs an addon which, unfortunately, is crippled in the way it handles mail lists. Categories are synced and recognized, I can even edit them conveniently. But there is no automatic and no decent manual way to build a mail list based on the categories of the synced contacts. There is a modal window that expects me to type email addresse in order to add them to the list. Type. No filter select, or at least drag and drop. Type.
This is the moment that I start to check Kontact again. Not the first time, KDE on arch is my main desktop for a year and it was KDE on debian before (less fun).
Connecting Kontact to ownCloud is very easy, actually comfortable. Syncing the contacts works smooth and fast, including the contact photos. KAddressbook shows me a flat list of names but there is a context menue which allows me to add fields for display and sorting. My pet property, Categories, is not included though.
Double click on a contact entry opens a editor dialog with a field for the categories, comfortable to select from a list of all existing values, if I decide to create a new one it is synced to ownCloud minutes later. Very nice indeed.
But try to create a group and populate it and there is a time tunnel back into the computational stone ages! There is a New Group dialog which is modal and no drag & drop is possible. Select a number of contacts, New Group -> the very same dialog, no 'selection awareness' and adding the selected entries to the new group. No!
The dialog expects me to type the name, at least offering an input-aware selection as I start to type. Seriously no fun!
So:
- is there any known way to automatically sync groups according to category settings?
- or at least, any known way to populate groups via drag&drop of selected entries?
- or, at the very least, any docu, examples, helpful sites on how to get and set the relevant data, methods etc to script my own way with qdbus-qt4 ?
I can
qdbus-qt4 org.kde.kaddressbook /kaddressbook/MainWindow_1 org.kde.KMainWindow.activateAction akonadi_contact_group_create
but i just opens the modal editor window and thus gets me nowhere.
Thunderbird und sieve
Sunday, January 29. 2012
ThunderBird zeigt mit sieve in Unterordner einsortierte Mails nicht mehr zuverlaessig an
Eine neue mail ist von einem Filter nach dings/bums/gedöns sortiert worden: der Ordner wird fett dargestellt, in Klammern die Anzahl ungelesener Mails darin. Nie ein Problem mit thunderBirds eigenen Message Filtern. Aber nun, mit Sieve, bekomme ich die Anzeige oft erst, wenn ich den betreffenden Ordner mit der Maus anklicke, öffne. Google findet mir nur einen vergleichbaren Report, dort mit cyrus sieve.
Ganz am Ende des Threads der Hinweis 'I suppose you've already set Thunderbird to check for new mails in all IMAP subfolders? "Preferences->Advanced->Config Editor->mail.check_all_imap_folders_for_new"?'
Bei mir stand da false, nun in true geändert.
Scheint geholfen zu haben.
ThunderBirds Filterregeln in sieve-script übersetzen
Bei ausgedehnter Ordnerstruktur und entsprechend viel Filterregeln viel Arbeit, bislang vor mir hergeschoben. Sie stehen jeweils in ~/.icedove/$profileName/ImapMail/$accountName/msgFilterRules.dat Jetzt finde ich Regelübersetzer als Online-Dienst. Von der Art mag es noch mehr geben; man kann ihnen aber auch nicht unbesehen trauen. Der eine übersetzte in brauchbare Regeln, fügte aber nicht sichtbare Zeichen ein, die ich mit Suchen/Ersetzen in einem guten Editor bereinigen musste. Der andere schmiß gar gleich eine uncaught exception...
courier, dovecot, sieve, push mail
Monday, January 23. 2012
Courier tat seine Arbeit an sich wunderbar, aber in der Integration von desktop- und mobilem Mailabruf stand es mir dann doch im Wege. Ich wollte
- mail-Sortierung und -filterung auf dem Server
- dazu gerne das sieve-Addon zu ThunderBird nutzen
- push-mail für k-9 mail auf meinem android verlaesslich und doch batterieschonend einrichten
Das sprach für einen Wechsel von Courier zu dovecot. Dabei habe ich auf debian oldstable (Lenny) einige Varianten durchprobiert.
Ein paar hilfreiche WebSeiten vorweg, Migration to Dovecot (1.0), Courier to Dovecot
courier -> dovecot 1.0
Der erste Anlauf blieb geradewegs im Rahmen des in der Distribution enthaltenen:
apt-get install dovecot-imapd dovecot-pop3d
dovecot --version (1.0.15-2.3+lenny1)
Weiter, nach Maßgabe des dovecot-Wiki, mit dem Script zur Migration der Daten
cd /usr/local/bin
mkdir dovecot-mig
cd dovecot-mig/
wget http://www.dovecot.org/tools/courier-dovecot-migrate-1.0.pl
./courier-dovecot-migrate-1.0.pl --recursive --convert /home
Und zur Dovecot - Konfiguration:
Für SSL bietet dovecot.conf viele Felder aber ich wollte einfach das auch für Courier eingesetzte chained certificate weiterverwenden, ging so:
joe dovecot.conf
# chained certificate doppelt eintragen
ssl_cert_file = /etc/ssl/certs/startssl/mail.domain.tld.pem
ssl_key_file = /etc/ssl/certs/startssl/mail.domain.tld.pem
# dovecot 1.0 lauscht so an IPv4 und IPv6
listen = [::]
# Pfad zum maildir
mail_location = maildir:~/Maildir
# namespace wie courier
namespace private {
prefix = INBOX.
separator = .
inbox = yes
}
dovecot neu starten:
/etc/init.d/dovecot restart
Ergebnis? Beim ersten start des MUA (Thunderbird) gab es einen Wald von Messageboxen und Thunderbird war eine Weile beschaeftigt, Mails zu synchronisieren. Ansonsten gings soweit ohne Drama, nur das Mail-filtern wollte nicht.
courier -> dovecot 1.2
Im zweiten Anlauf habe ich, auf einem anderen server, die in den backports vorgehaltene Version dovecot 1.2 installiert:
# backports in sources.list eintragen
joe /etc/apt/sources.list
deb http://www.backports.org/debian lenny-backports main contrib non-free
# und der key dazu, sonst nervt apt-get bei jedem Aufruf
sudo wget -O - http://backports.org/debian/archive.key | sudo apt-key add -
sudo apt-get update
sudo apt-get -t lenny-backports install dovecot-common dovecot-pop3d dovecot-imapd
Weiter, nach Maßgabe des dovecot-Wiki, mit dem Script zur Migration der Daten in der version fuer dovecot 1.1+
cd /usr/local/bin
mkdir dovecot-mig
cd dovecot-mig/
wget http://www.dovecot.org/tools/courier-dovecot-migrate.pl
./courier-dovecot-migrate.pl --recursive --convert /home
# die Anpassungen der Konfig
joe /etc/dovecot/dovecot.conf
# managagesieve und lda bringen die Mailsortierung auf dem server zuwege
protocols = imap pop3 pop3s imaps managesieve lda
# sowohl auf IPv4 wie IPv6 lauschen
listen = *, [::]
# im default verbietet dovecot Klartext-Passworte, aber hier haette es manche Klienten ausgesperrt
disable_plaintext_auth = no
# chained cert doppelt eintragen
ssl_cert_file = /etc/ssl/certs/startssl/mail.domain.tld.pem
ssl_key_file = /etc/ssl/certs/startssl/mail.domain.tld.pem
# lda ist der local delivery agent und stoesst das sieben und reindizieren der mails bei Auslieferung an
protocol lda {
postmaster_address = master@server.domain
mail_plugins = sieve
}
# sieve_dir ist das Verzeichnis, in dem Filterscripte abgelegt werden. unter dovecot 1.2 ist deren Name beliebig
plugin {
sieve = ~/.dovecot.sieve
sieve_dir = ~/mails/sieve
}
Konfig speichern und dovecot neu starten
/etc/init.d/dovecot restart
Damit der lda deliver nun auch benutzt wird, muss er postfix bekannt gemacht werden:
joe /etc/postfix/main.cf
Auch hier gab es mit Thunderbird zuerst mal Messageboxen und Resynchronisierung, aber dann liessen sich zur Belohnung Filterregeln für's serverseitige Filtern aus Thunderbird heraus editieren und es ging auch.
dovecot 1.2 -> dovecot 2.0
den Anstoss für dieses Upgrade gab ein Blog-Artikel von Peter Kieser mit der Argumentation:
- push funktioniert auf IMAP, indem zwischen dem Client und dem Server die Verbindung IDLE offengehalten wird. Alle paar Minuten werden "OK Still here"-Nachrichten ausgetauscht.
- Wenn das geschieht, reaktiviert Android eine reihe ruhende Netzwerk-Funktionen und die ziehen Strom, je häufiger das geschieht, je mehr leidet die Batterielaufzeit.
- K-9 hat als default einen refresh alle 24 Minuten, dovecot aber alle 2 Minuten.
- mit dovecot 1.2 laesst sich daran per Config nichts ändern, Dovecot 2.0 hat dagegen einen Parameter imap_idle_notify_interval
Dovecot 2.0 gibt es für Lenny als Prebuilt Binary, Upgrading Dovecot v1.2 to v2.0 im dovecot-wiki hilft auch weiter.
Als erstes /etc/dovecot/dovecot.conf in ein backup sichern, so dass im weiteren nichts verloren geht, auch wenn man im install die dovecot.conf durch die neue Version ersetzen laesst!
cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.1-2
joe /etc/apt/sources.list
# speichern, dann key besorgen
wget -O - http://xi.rename-it.nl/debian/archive.key | apt-key add -
apt-get update && apt-get upgrade
# die Konfigurationsdateien sehen für dovecot 2.0 einiges anders aus, die in dovecot 1.2 schon sehr umfangreiche dovecot.conf ist nun viel kuerzer und inkludiert stattdessen Konfigurationsdateien aus einem gesonderten Verzeichnis. Und optional eine local.conf, die ich mit diesen Einträgen angelegt habe:
mail_location = maildir:~/Maildir
Wenn der lda bei der Abarbeitung des sieve-scriptes einen Fehler feststellt, etwa wg eines Tippfehlers, einen Ordner nicht findet, schreibt er eine Fehlermeldung in ~/.dovecot.sieve.log
fail2ban - Regel für dovecot
Auch hierzu wird man im dovecot-wiki fündig.
push mail und (android-app) juice defender
Die beiden stehen sich schon im Weg, juice defender erzielt seine laufzeitverlängernden Wirkungen nicht zuletzt, indem es die Datenverbindung des smartPhone nur periodisch aktiviert. Mit den default-Einstellungen hatte es bei mir schon merklich was bewirkt, aber der push mail zuliebe habe ich es deaktiviert.
Zielkonflikt zwischen sieve und push-imap
Quasi als Schlussbemerkung hier, warum ich nach erfolgreicher Migration, upgrades, Konfiguration doch nicht ganz zufrieden wurde:
- sieve unterstuetzt nun serverseitig mein Mail-Ablage-Modell eines weitverzweigten hierarchischen Ordnerbaums mit deutlich > 100 systematisch/thematischen Ordnern. Ich kann von verschiedenen Orten (desktop, smartPhone, fremder Rechner) und MUA (ThunderBird, K-9, WebMail) darauf zugreifen und finde alles sortiert.
- imap-push zwischen dovecot (2.0) und k-9 funzt an sich auch wunderbar und mit dem auf 24//29 Minuten gestreckten Refresh-Interval auch halbwegs batterieschonend.
- Aber: imap-push hält je "push-aktivem" Ordner eine imap-idle - Verbindung offen. Ein anderes Model (nur eine Verbindung zwischen Client und Server bleibt idle offen, notify übergibt den Pfad zum aktualisierten Ordner) ist in der Mache, aber derzeit eben Zukunftsmusik. Das heisst konkret: mit 2, 3, 5 aktiven Ordnern ist alles bene, mit 127 hängt und klemmt es an allen Enden.
- mein Mail-Ablage-Modell dient dem Zweck, deduktiv/systematisch alte Mails wiederzufinden, imap-push dient dem Zweck, neue Mails sofort annonciert zu bekommen. Meine Wunschvorstellung war, dass k-9 und ThunderBird mir '''pling!''' sofort die neue Mail an ihrem systematischen Ort vor die Nase halten. Mit dem derzeitigen Stand der Protokolle geht das (bei vertretbarem Energieaufwand des smartPhone) aber nicht zusammen.
- meine Loesung ist dafür bis auf weiteres:
mobil: je ein account je Nutzung.- Ein Mail-account hält die hierarchische Ordnerliste, hier gibt es kein imap-push und keine regelmässige Synchronisierung, aktualisiert wird also nur bei Zugriff, und nur auf dem je gewünschten Pfad.
- Ein zweiter Mail-Account bekommt per .forward die selben neuen Mails zugestellt, alles unsortiert in die INBOX. Push macht sein Ding und das macht es gut. Wenn ich wirklich zu der neuen Mail den Kontext der vorigen brauche, kann ich ja auf dem anderen Konto nachsehen.
Tinnef a la Microsoft: winmail.dat
Friday, December 2. 2011
Man bekommt diese Attachments von Leuten, die ihre Mail mit outlook versenden, oben zwei Zeilen Text, dass alles wichtige in dem attachten 'Word.doc steht und dann kein lesbares attachment sondern eine Datei winmail.dat, mit der ausser dem Sender selbst niemand etwas anfangen kann.
Das Format ist ein Microsoft-Standard (Oxymoron?) mit dem treffend gewaehlten Namen tnef. So, zu meiner Freude kam ich jetzt mal darauf, dass debian eine Antwort darauf in den repositories hat:
apt-get install tnef
tnef -f winmail.dat -C Zielverzeichnis --unix-paths --verbose
klärt das Problem erstmal...
Alternativ kann man auch einen Webdienst dazu bemuehen, etwa bei tud.at, und sich die Dateien da auspacken lassen.
Dann gibt es für Thunderbird/Icedove das Addon LookOut, welches die Inhalte der winmail.dat wie zusätzliche attachments auflistet.
Den lieben Absender, der Outlook benutzt, sollte man bitten, seine Emails künftig nur noch im reinen Text Format zu versenden. Wie das geht, kann man bei Microsoft nachlesen.