PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mailserver ohne MTA



fork
18.08.16, 23:14
Hi,

ich habe mir gerade eine Lösung zusammengebastelt und finde die hat was. Grundlegender Ansatz ist, dass es doch ganz schön anspruchsvoll ist so einen MTA zu konfigurieren und den sicher und spamresistent zu halten. Auch wenn postfix(und exim, und ...) jetzt grundsätzlich exzellente Softwarepakete sind: Wenn man's richtig machen will, dann kostet das doch einiges an Aufwand.

Dovecot IMAP-Server ohne MTA (Mail-Transfer-Agent)

Gründe


Zugriff von überall auf meinen Mailspeicher
Mailspeicher ist in meiner Administration
MTA-Konfiguration ist komplex. Will mich nicht um den MTA kümmern müssen(Spam, Security)


Umsetzung

Ich habe mir einen dovecot aufgesetzt. Anschliessend habe ich mir ein Miniscript auf der Basis von pop2imap gebastelt, was die Mails abholt.


#!/bin/bash

exec >/tmp/fetchmail.log 2>&1

local_user=user
base=/home/$local_user
script=$base/script

$script/pop2imap --user1 email@adresse.de \
--host1 pop3.outlook.com \
--passfile1 $script/p1 \
--ssl1 \
--host2 127.0.0.1 \
--user2 $local_user \
--passfile2 $script/p2 \
--delete

# pop2imap sortiert alle neuen mails im Maildirverzeichnis "cur" ein
# und die Sieve-Filterregeln greifen von Haus aus nicht. Deswegen
# schütte die Mails nochmal manuell in den Dovecot-Auslieferungstrichter rein

cd $base/mailbox/cur

for mailfile in $(find . -type f -maxdepth 1);do
if ! grep -q "X-POP2IMAP-FILTERED: True" "$mailfile" ;then
/usr/lib/dovecot/deliver -d $local_user < <(formail -a "X-POP2IMAP-FILTERED: True" <"$mailfile") && rm -f "$mailfile"
else
echo "Mail already filtered"
fi
done


Im Dovecot habe ich mir dann noch sieve und managesieve aktiviert, dass ich meine Mails schön filtern und einsortieren kann. Dazu habe ich mir dann lokal einen mutt konfiguriert für's Terminal und als Webmailer habe ich noch roundcube.

Das schöne am Roundcube ist, dass man damit ein schöne Klick-Oberfläche zum anlegen von filtern hat mit dem managesieve-plugin. Die Besonderheit bei dem Abruf mit pop2imap ist, dass die Mails nicht durch den Filter laufen. Deswegen wirft mein Script oben jede Mail im Posteingang nach dem Abruf immer wieder erneut in die Dovecotauslieferung.

Verschickt werden die Mails direkt über die Freemailer, über die ich die Mails auch abhole. Der IMAP speichert ja auch die gesendeten Mails brav ab.

Auch wenn z. B. GMX inoffiziell auch bei den kostenfreien Accounts IMAP unterstützt, will ich doch lieber keine grossen Mailbestände dort lagern. Kann ja sein, dass die irgendwann mal "Eine Änderung im Management" haben. Und da ich nix dafür bezahle, könnte ich ja noch nicht mal böse auf die sein. Also lieber sicher bei mir selbst.

pop2imap(Kleines Perl Programm) gibt's hier: http://www.linux-france.org/prj/pop2imap/ (Backup hier (https://github.com/megabert/pop2imap)) Der Entwickler - Gilles Lamiral - hat auch das super tool imapsync entwickelt. http://www.rdg-clan.eu/inc/images/smileys/114.gif Irgendwie auffällig wie viele gute Werkzeuge in Perl geschrieben sind. Da ist mir die letzte Zeit so einiges über den Weg gelaufen.

Was meint Ihr dazu?

DrunkenFreak
19.08.16, 08:19
Klingt kompliziert. Fetchmail mit einem lokalen MTA macht das gleiche. Der MTA muss ja nicht nach außen freigegeben werden.

Newbie314
19.08.16, 08:46
Ich glaube er will von überall auf den Mta zugreifen. Von daher eine coole Lösung.

DrunkenFreak
19.08.16, 08:58
Wenn dem so ist, kommt er nicht drum herum, diesen vernünftig zu konfigurieren. Da er aber nur seine Mails überall lesen will, reicht ein IMAPd oder POPd aus. Wie er diesen befüttert ist prinzipiell egal. Ich halte fetchmail hier allerdings für einfacher, da es zigfach dokumentiert ist im Netz und man sämtliche Filter des MTAs nutzen kann.

fork
24.08.16, 23:09
Das mit der regelmässigen Neufilterung hat doch genervt. Die Mails kommen immer wieder als neu in den Posteingang rein. Deswegen habe ich das Script erweitert, so dass bei der Filterung jetzt ein Header hinzugefügt wird und die Mails anschliessend nicht nochmal gefiltert werden. Das benötigt formail aus dem Paket maildrop.