Kategorien
linux opensource tutorial uup

Ubuntu (8.04 LTS) Mailserver mit Postfix, Dovecot und Getmail

Mailboxes

Heute gibts mal wieder ein kleines Tutorial. Viele haben angefragt wann denn endlich das Mailserver-Tutorial auch für Hardy verfügbar ist, und was soll ich sagen…hier ist es: Heute richten wir einen Mailserver auf Ubuntu Hardy Heron (8.04 LTS) mit Hilfe von Postfix, Dovecot, Getmail. Doch zunächst eine kleine Übersicht wer im Konzert welches Instrument spielt:

Diagramm lokaler Mailserver

Um das Bild mal in einen alltäglichen Vorfall zu implementieren mal das folgende Beispiel:
Jemand schickt euch eine E-Mail an eure Adresse . Diese landet auf dem Server eures Providers (ProviderPOP3). Getmail, welches auf unserem Server installiert ist fragt die Mail ab und transferiert sie vom Provider-Server auf den lokalen Server und schiebt sie in das Mail-Verzeichnis des zugehörigen Benutzers. Der Benutzer fragt nun mit seinem Mail-Client (Thunderbird, Evolution, Outlook etc.) beim lokalen Server nach ob neue Mails für ihn gekommen sind und Dovecot liefert ihm die eingegangene Mail entweder per POP3 oder IMAP aus. Nachdem der Benutzer die Mail gelesen hat, will darauf antworten. Nach dem Klick auf „Senden“ im Mail-Client empfängt Postfix die Mail und leitet sie an den Server beim Provider weiter (Provider-SMTP) der die Mail dann an sein endgültiges Ziel bringt.

Um nochmal kurz Klarheit zu schaffen: Dieser Server ist dazu gedacht zu Hause im Schrank zu stehen, Mails vom Provider zu holen und für den Benutzer aufzubewahren, mit dieser Konfiguration kann kein „richtiger“ Mail-Server, zum Beispiel auf einem root- oder vServer, betrieben werden.

Bevor es mit Installieren und Konfigurieren los geht, müssen noch ein paar Dinge geklärt werden:

1. Die meisten Freemail-Anbieter erlauben es nicht E-Mails von beliebigen Adressen weiterzuleiten. Das heißt ich kann über GMX keine Mails verschicken, die den Absender zeroathome@freemailanbieter.de tragen. Da Arcor solche Beschränkungen zur Zeit nicht hat, bietet es sich an die Arcor-Freemail-Mailserver als Relay zu verwenden. Genaueres dazu gibt es hier. In dieser Anleitung wird diese Methode ebenfalls verwendet.

2. Ein Mailserver ist kein Spielzeug. Falsch konfiguriert kann er schnell als Spam-Schleuder enden. Also: Nachdenken und mit gesundem Menschenverstand handeln. Will sagen: Nicht gleich draufloshacken, sondern erst lesen und verstehen. Richtet diesen Mailserver erst einmal testweise ein und spielt ein wenig damit herum, bevor ihr ihn produktiv einsetzt.

3. Ich übernehme (wie immer) keinerlei Haftung für irgendwelchen Un- oder Schwachfug der mit einem mit diesem Tutorial eingerichteten Server angerichtet wird!

Aber nun zur Sache:

Postfix

Installieren:
sudo apt-get install postfix
Die Fragen die hier gestellt werden können zunächst ignoriert werden, denn im nächsten Schritt folgt die initiale Konfiguration von Postfix mit:
sudo dpkg-reconfigure postfix

Die Fragen des Assistenten sollten folgender Maßen beantwortet werden:

Allgemeine Art der Konfiguration Internet mit Smarthost
System-Email-Name server.local.home (Der Hostname den ihr bei der Installation des Servers angegeben habt.
SMTP-Relay-Host mail.arcor.de (Oder der Relay Server eures Vertrauens)
Empfänger von Root-E-Mails Euer admin-Benutzer
Empfang für welche Domains server.local.home, localhost.localdomain, localhost
Synchrone Aktualisierung… Nein
Lokale Netze 127.0.0.0/8
Maximale Postfachgröße nach Belieben, ‚0‘ für kein Limit
Zeichen für lokale Adress… +
Internet Protokolle alle

Danach laufen einige Zeilen über den Bildschirm und Postfix ist „initialisiert“.
Die detaillierte Konfiguration erfordert etwas mehr Handarbeit und beginnt mit der Einrichtung der Authentifizierung am Server. Diese ist nötig, damit nur Mails verschickt werden können, wenn man sich mit Benutzernamen und Passwort anmeldet.

Zur Konfiguration wird das Programm ‚postconf‘ verwendet, dieses trägt die Änderungen direkt in die Datei ‚/etc/postfix/main.cf‘ ein.

sudo postconf -e 'smtpd_sasl_type = dovecot'
sudo postconf -e 'smtpd_sasl_path = private/auth-client'
sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'

Da wir hier Dovecot verwenden um die Drecksarbeit der Authentifizierung zu erledigen, schieben wir hier eine kurze Dovecot-Konfigurations-Session ein:
Zuerst installieren:
sudo apt-get install dovecot-common

Anschließend muss in der Datei ‚/etc/dovecot/dovecot.conf‘ die Umgebung ’socket listen‘ gesucht werden und sollte nach dem Editieren so aussehen:
socket listen {
#master {
# Master socket provides access to userdb information. It's typically
# used to give Dovecot's local delivery agent access to userdb so it
# can find mailbox locations.
#path = /var/run/dovecot/auth-master
#mode = 0600
# Default user/group is the one who started dovecot-auth (root)
#user =
#group =
#}
client {
# The client socket is generally safe to export to everyone. Typical use
# is to export it to your SMTP server so it can do SMTP AUTH lookups
# using it.
path = /var/spool/postfix/private/auth-client
mode = 0660
user = postfix
group = postfix
}
}

Hier bitte darauf achten, das die richtigen Kommentarzeichen vor der richtigen Klammern entfernt werden, ist ein wenig unübersichtlich das ganze.

Dann wird dovecot kurz neu gestartet und mit der Postfix-Konfiguration fortgefahren:
sudo /etc/init.d/dovecot restart

Um verschlüsselt mit Postfix kommunizieren zu können, was sich in Zeiten gemeinsam genutzter schnurloser Netzwerke durchaus aufdrängt, muss ein Zertifikat erstellt werden. Dieses Zertifikat wird höchstwahrscheinlich vom E-Mail Client bemängelt werden, da es nicht von einer der offiziellen Stelle authorisiert wurde, aber für den privaten Zweck reicht ein selbst erstelltes Zertifikat allemal aus.

Beim ersten Schritt wird nach einem Passwort gefragt. Hier sollte ein ausreichend starkes Passwort gewählt werden. In einigen der weiteren Schritte werden Informationen abgefragt, die im Zertifikat gespeichert werden. Wie wahrheitsgemäß diese Fragen beantwortet werden bleibt euch überlassen, lediglich die Frage nach dem ‚Common Name‘ sollte mit dem Namen des Servers aus der initialen Postfix-Konfiguration (hier server.local.home) beantwortet werden.

openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
sudo openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
sudo mv smtpd.key /etc/ssl/private/
sudo mv smtpd.crt /etc/ssl/certs/
sudo mv cakey.pem /etc/ssl/private/
sudo mv cacert.pem /etc/ssl/certs/

Um die Verschlüsselung zu aktivieren noch einmal eine Runde mit postconf:

sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_use_tls = yes'
sudo postconf -e 'smtpd_use_tls = yes'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/ssl/private/smtpd.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/ssl/certs/smtpd.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/ssl/certs/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'
sudo postconf -e 'myhostname = server.local.home'

Die nächste Zeile ist nötig wenn doch innerhalb des Servers Nachrichten verschickt werden. Zum Beispiel an ‚benutzer@localhost‘. Sie sorgt dafür das die Nachricht an Dovecot übergeben wird, welcher dann für die richtige Einordnung der Mail in die Mailbox des jeweiligen Benutzers zuständig ist.
sudo postconf -e 'mailbox_command = /usr/lib/dovecot/deliver'

Zum Schluß fehlt noch die Verbindung zum Relay-SMTP-Server beim Provider, ohne den unsere Mails nich zugestellt würden:
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth'
postconf -e 'smtp_sasl_security_options = noanonymous'
postconf -e 'relayhost = mail.arcor.de'

Wie in Zeile 2 zu sehen muss nun noch die Datei ‚/etc/postfix/smtp_auth‘ angelegt werden:
sudo vim /etc/postfix/smtp_auth

In dieser Datei muss für den Provider-SMTP-Server der Benutzername und das Passwort angegeben werden mit dem man sich dort anmelden kann:
mail.arcor.de benutzer:passwort

Danach kann die Datei gespeichert werden und mit dem Befehl
sudo postmap /etc/postfix/smtp_auth
für Postfix lesbar gemacht werden.

Zu guter Letzt wird postfix neu gestartet:
/etc/init.d/postfix restart

Dovecot

Zunächst muss Dovecot natürlich installiert werden:
sudo apt-get install dovecot-imapd dovecot-pop3d

Dann gehts direkt zur Konfiguration in der Datei ‚/etc/dovecot/dovecot.conf‘. Da die Datei relativ viel Konfigurationsmöglichkeiten enthält ist es am einfachsten die Suchfunktion eures favorisierten Editors zu nutzen um die betreffenden Zeilen zu finden:
Hier wird Dovecot gesagt welche Dienste er bereitstellen soll. Einer sollte mindestens drinstehen, wers nur verschlüsselt machen möchte läßt die beiden ohne ’s‘ am Ende einfach weg:
protocols = imap imaps pop3 pop3s

Um die Verschlüsselung zu aktivieren sind diese Zeilen nötig (hier gilt das gleiche wie für das Postfix-Zertifikat):
ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
ssl_disable = no
disable_plaintext_auth = no

Diese Zeile legt fest wo die Mails hingeliefert werden. In diesem Beispiel landen die Mails im Home-Verzeichnis des jeweiligen Benutzers. Genauer in einem Unterverzeichnis namens ‚mail‘. Der Pfad kann natürlich beliebig angepasst werden, aber die Mails im Home-Verzeichnis abzulegen ist wohl das Sinnvollste.
mail_location = maildir:~/mail

Während der Konfiguration von Postfix hatten wir den Fall, das wenn eine Mail lokal (z.B. an benutzer1@localhost) geschickt wird, diese von Postfix an Dovecot weitergegeben wird, damit Dovecot diese Mails auch entgegen nimmt muss die Umgebung ‚protocol lda‘ angepaßt werden:
protocol lda {
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = admin-benutzer@localhost
}

Das waren bereits die nötigen Schritte für Dovecot, und wenn beim Neustart keine Fehler ausgegeben werden, sollten die Clients auch auf den Server zugreifen können:
sudo /etc/init.d/dovecot restart

Getmail

Installation:
sudo apt-get install getmail4

Konfiguration:
Es muss für jeden Benutzer im Home-Verzeichnis ein neuer Ordner erstellt werden, der ‚.getmail‘ heißt, also versteckt ist. In diesem wird dann die eigentliche Konfigurationsdatei ‚getmailrc‘.

Um die Post per POP3 abzuholen, sollten die Dateien wiefolgt aufgebaut sein:

[retriever]
type = SimplePOP3Retriever (falls das nicht funktioniert: BrokenUIDLPOP3Retriever)
server = pop.webmailer.de
username = username@webmailer.de
password = geheim

[destination]
type = Maildir
path = /home/benutzer/mail/
user = benutzer

[options]
delete = true
message_log = /home/benutzer/.getmail/log

Das sorgt dafür das die Mails vom Provider abgeholt, in die entsprechenden Benutzer-Verzeichnisse verschoben, und anschließend beim Provider gelöscht werden. Der ganze Vorgang wird pro Benutzer in die Datei ‚/home/benutzer/.getmail/log‘ gelogt, falls es also Probleme gibt lohnt ein Blick hierhinein.
Da die Datei das Passwort des jeweiligen Benutzers enthält sollte auch nur dieser Zugriff auf die Datei haben:

sudo chown benutzer:benutzer /home/benutzer/.getmail/getmailrc
sudo chmod 600 /home/benutzer/.getmail/getmailrc

Um jetzt die Post von allen Benutzern abzuholen erstellen wir ein kleines Skript und tragen dieses in die crontab ein:

Skript getthemail.sh:

#!/bin/bash
for getfile in $( find /home -name getmailrc -print )
do
#echo $getfile
/usr/bin/getmail --rcfile $getfile
done
exit 0

Dieses machen wir ausführbar und kopieren wir nach ‚/usr/local/bin‘:
sudo chmod +x getthemail.sh
sudo cp getthemail.sh /usr/local/bin
sudo crontab -e
*/2 * * * * /usr/local/bin/getthemail.sh >/dev/null 2>&1

Das sorgt dafür das E-Mails alle 2 Minuten abgeholt und auf die Benutzer verteilt werden.

Ende

Soo, wenn nichts schief gelaufen ist, solltet ihr jetzt einen funktionierenden Mail-Server im Schrank oder Keller stehen haben. Falls es Probleme gibt, oder irgend etwas nicht so funktioniert wie ihr denkt das es sollte, checkt zuerst die Logs unter ‚/var/log/mail.*‘. Dort finden sich zumeist die einschlägigen Fehlerquellen und lassen sich zumeist relativ einfach beheben.

Falls jemandem Fehler, seien es Tipp- oder grundsätzliche, bitte ich mich zu kontaktieren damit ich diese aus der Welt schaffen kann.

Einen Artikel zur Einrichtung von Viren- und Spamfilter findet ihr hier: Spam- und Virenfilter für den Mailserver mit Spamassassin und ClamAV
Header-Bild: flickr

42 Antworten auf „Ubuntu (8.04 LTS) Mailserver mit Postfix, Dovecot und Getmail“

Danke für diese super Beschreibung.
Eine der besten, die ich gefunden habe.
Wollte mal lieb nachfragen, wann du das Tutorial zu Spam- und Viren-Schutz machst? 🙂

Endlich mal was für die kleine Mailbox. Besten Dank.

Eine Ergänzung:

Ich musste noch die Verzeichnisstruktur anlegen und die Rechte dazu ändern:

mkdir ~/mail/cur
mkdir ~/mail/new
mkdir ~/mail/tmp

chown -R :mail ~/mail

Noch eine Kleinigkeit, wenn große Mailboxen abgeholt werden, kann es passieren, dass cron den getthemail.sh script zweimal gleichzeitig abholt. Das hat zur Folge, dass die gleichen Mails mehrmals abgeholt werden und als mehrere Kopien in der Inbox landen. Ein Lock-File verhindert das:

#!/bin/bash
LOCK_FILE=“/var/lock/getthemail“
if [ ! -f „${LOCK_FILE}“.lock ];
then
lockfile-create „${LOCK_FILE}“
lockfile-touch „${LOCK_FILE}“ &
# Save the PID of the lockfile-touch process
BADGER=“$!“

for getdir in $( find /var/pbs_daten/pbs_volume/vmail -name getmailrc -print | sed „s/\/getmailrc//g“ )
do
/usr/bin/getmail –getmaildir=${getdir}
done

kill „${BADGER}“
lockfile-remove „${LOCK_FILE}“
fi
exit 0;

Hallo,
schließe mich der ersten Meinung an. Ist echt eine gute Beschreibung für einen Mailserver. Kann man bei dieser Konfiguration sicher sein, kein offenes Relay in Netz gezaubert zu haben?

@stepp37: Da du dich bevor du etwas versenden kannst am Server mit Benutzername und Passwort authentifizieren musst, ist die Geschichte solange sicher, wie niemand das Passwort errät 😉

Hi,

vielen Dank für dieses Tutorial, obwohl ziemlicher Newby, hab‘ ich es ohne Probleme geschafft den Server aufzusetzen.

Liebe Grüße,
D.A.

Erstmal Danke für das tolle Tutorial.

Leider ist alles darauf ausgelegt, das das ganze nur einem Benutzer zugute kommt.
Wie man dovecot und getmail dazu überredet mehrere POP3-Fächer zu übernehmen und diese unterschiedlichen Benutzern zur verfügung stellt habe ich schon herraus gefunden.

Nur wie macht man das mit Postfix?

Sprich:
User1 schreibt eine E-Mail. Diese wird dann von Postfix an smtp.user1domain.com gesendet.
User2 soll auch eine Mail schreiben dürfen, nur diese soll nun an smtp.user2domain.com gehen

Hi,
erstmal vielen Dank für das super Tutorial.
Hab‘ das ganze mit Ubuntu Server 9.10 aufgesetzt und finde im Log folgende Meldung
server deliver(root): chdir(/root) failed: Permission denied
server deliver(root): stat(/root/mail/tmp) failed: Permission denied (euid=65534(nobody) egid=65534(nogroup) missing +x perm: /root)

Kann diese Meldungen nicht so richtig interpretieren, weiß jemand Rat?

MfG
Werner

@vralfy: Nein, das Tutorial ist schon darauf ausgelegt, das mehrere Benutzer E-Mails empfangen können. Dazu muss lediglich ein neuer Benutzer mit Homeverzeichnis angelegt und die entsprechende Konfiguration für getmail in diesem Homeverzeichnis platziert werden. Sollte ich vielleicht nochmal explizit erwähnen im Tutorial. Aber das hast du ja anscheinend selbst herausgefunden.

Für ausgehende Mails ist das seit Postfix Version 2.3 auch einigermaßen trivial. Für die genaue Konfiguration würde ich dich mal auf
http://www.postfix.org/SASL_README.html#client_sasl_sender
verweisen. Falls du noch weitere Fragen hast, darfst du aber gerne wieder kommen 🙂

Sorry das die Antwort ein paar Tage gebraucht hat, wollte den ServerUmzug abwarten.

@Werner:
auch an Dich: Sorry das die Antwort ein paar Tage gebraucht hat, wollte den ServerUmzug abwarten.

Das Problem bei dir ist denke ich das der Server versucht eine Mail an den User root auszuliefern, also in das Verzeichnis „/root/mail“. Der User unter dem der Maildaemon läuft hat aber auf dieses Verzeichnis keinen Zugriff, darum die Fehlermeldung.
Du musst also entweder die Zugriffsrechte auf /root anpassen, oder die Mails von root an deinen Adminbenutzer umleiten (was ich empfehlen würde)
Für die Umleitung sollte es reichen die Datei „/etc/postfix/aliases“ anzulegen, und die Zeile
root: dein-admin-benutzer
einzutragen. Anschließend den Befehl „newaliases“ ausführen und die Umleitung sollte funktionieren!

Servus,
erst mal ein großes Lob an dieses Tutorial! Hat mir gut gefallen.
Bei mir gab es in Deiner Ausführung allerdings folgendes Problem:

Alle 2 Minuten (also der Takt im dem cron den Befehl /usr/local/bin/getthemail.sh ausführt) kommt dieser Fehler per Email:
SCHNIPP…
Error: Default config/data dir „/root/.getmail/“ does not exist – create or
specify alternate directory with –getmaildir option
…SCHNAPP

Habe ich umgangen, in dem ich für jeden (Email-)Benutzer eine „getthemail.sh“ erstellt habe. Diese rufe ich dann nicht, wie bei Dir beschrieben, mit „crontab -e“ unter root auf, sondern mit „crontab -e“ unter dem entsprechenden Benutzer.
Dann funktioniert es!

Trotz allem würde es mir auch gefallen zentral (root: crontab -e) alle Mailkonten abzurufen und zu verteilen. Ich weiß aber nicht wie ich den genannten Fehler abgestellt bekomme.

Gruß
christian

@christian: Das Skript ist genau dazu gedacht, alle Nachrichten für alle Benutzer auf dem Server abzuholen. ich denke das bei dir irgendetwas im Skript nicht stimmt, da er nicht in den entsprechenden Home-Verzeichnissen der User sucht sondern nur im Home des Users, der den Cronjob (und damit das Skript) ausführt, was ‚root‘ sein sollte.
Überprüfe also nochmal ob das Skript richtig funktioniert indem du es mal manuell auf der Konsole ausführst. Falls du nicht weiterkommst, kannst du dich gerne nochmal melden.

Hi,
den von mir beschriebenen Fehler (17.01.19) habe ich gelöst:
Ich habe das Verzeichnis /root/.getmail/ angelegt, und es hat anschließend funktioniert.

Das Script war nämlich OK. Nachdem ich Zeile für Zeile des Scriptes manuell auf der Konsole ausprobiert habe, und es trotzdem nicht funktionierte, legte ich eindach diesen Ordner mal an. Und prompt klappte es. Warum das so ist, würde mich allerdings noch interessieren.

Hast Du ne Ahnung?

P.S.
Wie war das?
Theorie ist, wenn man alles weiß und nichts funktioniert.
Praxis ist, wenn alles funktioniert aber keiner weiß warum. 🙂

Update:
Nachdem ich das nun bei mir für zwei Emailkonten eingerichtete hatte, störte mich noch die Tatsache, daß mir der Cron bei jeder Ausführung einen Statusbericht vom getmail geschickt hat.
Der Parameter –quiet im Script hat das bei mir dann verhindert.
Gruß

Hat geklappt,
mußte das alias in die Datei /etc/aliases eintragen, dann hat’s funktioniert.

Wie konfiguriere ich den Dovecot um mit Thunderbird auf die Imap-konten zuzugreifen?
Hab‘ keine Anleitung dazu gefunden.

MfG
Werner

@Werner: das sollte eigentlich so schon funktionieren, auf dem server sollten die ports dafür (110,143,993) offen sein und dahinter dovecot auf anmeldungen warten

Hab‘ gelesen, daß ich noch folgenden Code in der dovecot.conf zufügen muß.
protocol imap {

login_greeting_capability = yes
imap_client_workarounds = tb-extra-mailbox-sep
}

Ist das notwendig und richtig?

Mir ist auch noch nicht klar wie ich Thunderbird konfiguriere, damit dieser auf die imap-konten von Dovecot zugreift.
Gibt’s nicht irgendwo eine kleine Anleitung dazu?

Gruß
Werner

Tach Werner!
Bei mir funktioniert der Server. Dafür nochmal nen Dank an Zero! 🙂

Emails rufe ich auch mit Thunderbird ab. Folgendermaßen funktioniert es bei mir:
Server-Einstellungen des entsprechenden Kontos:
Server: IP-Adresse (Falls Du nen DNS hast, funktioniert auch der Name)
Benutzername: Dort kommt der Linux-Benutzer rein, der die entsprechenden Mails erhält.
Wenn Du die Mails nun vom TB abholen läßt, sollte er Dich nach einem Kennwort fragen. Das ist dann das Linux-Kennwort des Benutzers.
Mit dem Postausgangsserver machst Du es genauso.

Greetings

Super, jetzt funktioniert’s bei mir auch 🙂
Vielen Dank für die Hilfestellung !!!

MfG Werner

@christian
An welche Stelle im Script muß den der Parameter -quiet geschrieben werden?

MfG Werner

SCHNIPP…
Skript getthemail.sh:

#!/bin/bash
for getfile in $( find /home -name getmailrc -print )
do
#echo $getfile
/usr/bin/getmail –quiet –rcfile $getfile
done
exit 0
…SCHNAPP

Irgendetwas funktioniert mit meinem Script noch nicht. Hab‘ leider keine Ahnung von Scriptprogrammierung und bräuchte nochmal Eure Hilfe.
Habe das gleiche Problem wie christian (s. Post vom 17.01.2010 14:28).
Wenn ich das Script von der Konsole ausführe bekomme ich die Meldung:
Zeile 7: exit: o: Ein numerischer Parameter ist erforderlich.
Das Script sieht genauso wie im Tutorial aus.
Wenn ich vor dem rcfile nur ein Bindestrich statt zwei schreibe so wie christian (Post 31.01.2010 19:33) dann bekomme ich in das Postfach eine mail mit folgendem Inhalt:
Error: unknown argument (s) [‚/home/werner/.getmail/getmailrc‘] ; try –help
Die angegebene Pfadangabe ist schon richtig, wie komme ich den da weiter?

MfG Werner

Sorry, das sind 2(!) Bindestriche. Ist irgendwie hier verschluckt gegangen.

Mach doch im Terminal erst mal diesen Befehl:
find /home -name getmailrc -print

Dann sollte er die getmailrc finden und mit Pfad ausgeben.

Anschließend machste diesen Befehl:
/usr/bin/getmail -–quiet -–rcfile $getfile

Und anstelle von $getfile gibst Du die Pfadangabe des find-Befehls ein.
Dann sollte getmail mit diesem spezifischen Konfigurationsfile starten.

Wenn das funktioniert, läuft auch Dein Script.

Ok, so funktioniert es.
Woran könnte es denn dann liegen, daß es bei der automatischen Ausführung nicht läuft?
Bekomme weiterhin Error: Default config/data dir „/root/.getmail/‘ does not exist – create or specify directory with –getmaildir option.
Wenn ich die Fehlermeldung richtig interpretiere wird im Verzeichnis von root nach der getmailrc gesucht, daß dort keine gefunden wird ist klar. Warum wird denn die getmailrc im Verzeichnis des Benutzers nicht gefunden?
MfG Werner

Schau mal in meinen Kommentar vom 24.01.2010 um 13:07

SCHNIPP:..
Hi,
den von mir beschriebenen Fehler (17.01.19) habe ich gelöst:
Ich habe das Verzeichnis /root/.getmail/ angelegt, und es hat anschließend funktioniert.
…SCHNAPP

Ok, auch das funktioniert bei mir, vielen Dank für Deine Hilfe!
Weißt Du inzwischen warum das so ist?

Gruß Werner

Bekomme bei jedem Abruf eine mail vom Cron Daemon geschickt:
/usr/share/getmail4/getmailcore/baseclasses.py:26: DeprecationWarning: the sets module is deprecated import sets
Weiß jemand was das zu bedeuten hat?

Gruß Werner

Habe die aktuelle Version (4.16.0) von der getmail-homepage installiert, nun scheint sich das Problem gelöst zu haben.

Gruß Werner

@Werner: Die Fehlermeldung heißt einfach nur das eine Codezeile in Getmail eine Funktion enthält die in einer zukünftigen Python Version nicht mehr vorhanden sein wird.

Um die Mails vom Cron-Daemon komplett zu unterbinden muss der Eintrag in die crontab geändert werden.
An den Aufruf des Skripts muss man „>/dev/null 2>&1“ anhängen.
Ich werde aber gleich den Artikel noch entsprechend ändern.

Hab‘ noch Probleme mit dem Versand von emails.
Wenn ich von der Konsole mittels mailx eine email versende kommt diese auch an und in der Datei /var/log/mail.log steht etwas von certificate verification failed for mail.gmx.net[213.165.64.20]:25: untrusted issuer, …. , status=sent
Wenn ich nun über Thunderbird eine email verschicke erscheint diese im Ordner ‚Gesendet‘ und es sieht zunächst so aus als wenn die email korrekt versendet wurde. Die email kommt aber nicht an und in der mail.log steht wieder certificate verification failed …, dann aber status=bounced, … , This server does not accept an empty envelope from (http://portal.gmx.net/serverrules) {mp=52} (in reply to MAIL FROM COMMAND)

Weiterhin wundert mich, daß bei jedem Start von Thunderbird ein Fenster erscheint mit der Überschrift ‚Sicherheitsfehler: Domainnamen stimmen nicht überein‘ mit folgendem Inhalt:
Sie haben versucht, eine Verbindung mit „server“ aufzubauen. Allerdings gehört das „vorgezeigte“ Sicherheitszertifikat „server.home“, usw. Nach Bestätigung mit OK funktioniert’s trotzdem.
Beim Versenden von email öffnet sich ein Fenster ‚Website zertifiziert von unbekannter Zertifizierungsstelle‘. Dort kann ich die Option ‚Dieses Zertifikat immer aktzeptieren‘ zwar anwählen, nach Bestätigung mit OK erscheint das Fenster erneut. Es läßt sich nur die Option ‚Dieses Zertifikat temporär (für diese Sitzung) akzeptieren‘ anwählen. Dann erscheint wieder das o.g. Fenster ‚Sicherheitsfehler: … ‚ , nach Bestätigung mit OK verhält es sich wie im Absatz oben beschrieben.

Kann jemand etwas damit anfangen oder in Zusammenhang bringen?

Gruß Werner

@Werner:

Die beiden Fehler hängen auf jeden Fall schon mal nicht zusammen.
Für das erste problem wären ein paar mehr Informationen nicht schlecht, ein etwas ausführlicherer Auszug aus der mail.log zB. (aber bitte nicht hier posten, sondern hier: paste.ubuntuusers.de und dann den link hier posten)

Das zweite „Problem“ beruht darauf das du verschlüsselt mit deinem Mailserver kommunizieren willst, das Zertifikat des Mailservers aber selbst erstellt ist und damit nicht offiziell anerkannt. Thunderbird(oder auch Firefox) vertrauen standardmäßig nur Zertifikaten die von offiziellen Stellen „beglaubigt“ werden.
Im Prinzip ist das nicht weiter schlimm, da du ja weißt das es dein Server ist mit dem du sprichst. Es würde also genügen das Zertifikat zu den Vertrauenswürdigen Zertifikaten hinzuzufügen.

Habe einen Post bei Ubuntuusers.de erstellt und hoffentlich alle notwendigen Informationen gepostet:
http://forum.ubuntuusers.de/topic/versenden-von-emails-mit-thunderbird-postfix-/#preview

Zum zweiten „Problem“:
Soetwas habe ich schon vermutet, nur hab‘ ich es noch nicht geschafft diese Zertifikat dauerhaft zu den vertrauenswürdige Zertifikaten hinzuzufügen. Bei jedem Start von Thunderbird bekomme ich die Frage nach dem Zertifikat gestellt und die Auswahl der Option ‚Dieses Zertifikat immer akzeptieren‘ wird nicht angenommen?
Was mich auch wundert ist, daß die Meldung ‚Domainnamen stimmen nicht überein‘ kommt.
In der Datei /etc/hosts ist der server folgendermaßen eingetragen:
IP server.local server
Somit müßte doch ’server.local‘ und ’server‘ „gleich“ sein, aber warum wird dann der Domainname beanstandet, oder hab‘ ich da was falsch verstanden?

Gruß Werner

Hallo,
nochmals vielen Dank für diese super Beschreibung.
Hier mal meibne Erfahrungen damit:

1. bei der Zeile /etc/init.d/postfix restart wurde ein Fehler ausgegeben, die funktionierte bei mir nur mit sudo /etc/init.d/postfix restart

2. Bei Dovecot-Konfiguration tratt folgender Fehler auf
ssl_disable = no erzeugte eine Fehlermeldung beim neustart von Dovecot, habe ich dann auskommentiert

3. Getmail habe ich nicht richtig konfiguriert bekommen und benutze Fetchmail, funktioniert wunderbar.

Nochmals vielen Dank
Gruß Rolf

@Rolf: Freut mich das die Anleitung helfen konnte!
zu deinen Punkten:

1. Ja, da fehlt schlicht das ’sudo‘ vor dem Befehl. Die Fehlermeldung dürfte auf unzureichende Rechte zum Neustarten des Dienstes hinweisen.

2. Der Konfigurationsparameter wurde in neueren (>1.2) Dovecot versionen durch den Parameter
ssl = yes
ersetzt. Du bist anscheinend auf einer neueren Ubuntu-Version unterwegs, denn das Paket in Hardy ist 1.0.x

3. Getmail ist nicht jedermanns Sache, aber wenns mit fetchmail funktioniert, dann passts ja 🙂

Viel Spaß noch beim Mailservern!

Kommentare sind geschlossen.