Installation: Kopano – der „neue“ Stern am Groupwarehimmel – Teil 2 (MTA Installation)

In Teil 1 meiner Kopanoartikelserie wurde (hoffentlich) klar, dass die Installation im Grunde genommen kein Hexenwerk ist. Kopano läuft, die Komponenten funktionieren. Aber… Ohne einen MTA  – wie zum Beispiel Postfix –  macht eine Groupware keinen Spaß!

Ziel dieses Artikels ist es, die Mailfunktionalität in Kopano zu implementieren. Damit man die Mailaccounts nicht separat anlegen muss, erhält der MTA die benötigten Daten aus der Kopanodatenbank. (= primäre Mailadresse).

Schließlich werden noch ein paar Mechanismen zur Spamabwehr eingebaut.

Dazu kommen wir jedoch später!

Kopanobenutzer, Postfix, Mailadressen… wie passt das zusammen?

Ist man Teil 1 gefolgt, befindet sich zur Zeit ein Benutzer in der Kopanodatenbank. (Benutzername: gestl, Emailadresse: daniel.gestl@it-yourself.at). Nun muss noch ein MTA her, der die Emailkommunikation übernimmt und ankommende Emails an Kopano weitergibt.

Kopano dagent

Die Kommunikationsschnittstelle zwischen dem MTA (z.B. Postfix) und Kopano bildet der sogenannte Kopano-dagent. Er „wartet“ auf eingehende Verbindungen vom MTA. Der Datenaustausch erfolgt über das LMTP (Local Mail Transfer) Protocol.

In der Standardkonfiguration, verwendet dagent den Port 2003 und wartet auf einen Verbindungsaufbau.

Die Konfiguration von dagent, kann in der Datei:

/etc/kopano/dagent.cfg

angepasst werden. Will man die Standardkonfiguration übernehmen, ist in dieser Datei jedoch nichts zu tun.

Muss es Postfix sein?

Nein, muss es nicht. Kopano ist vollkommen modular aufgebaut. Dies gilt nicht nur für die Kopanokomponenten, sondern auch für annähernd alle Komponenten, mit denen Kopano interagiert.

Da Postfix aber einfach cool ist, darf es hier auch mitspielen. 😉

Details zur Posfixkonfiguration

Postfix soll „Final Destination“ für die Emaildomain sein. Ich verwende die Domain it-yourself.at.

Sämtliche Änderungen müssen bitte in der

/etc/postfix/main.cf

vorgenommen werden.

Auskunftssperre für Postfix

Der MTA soll nich all zu viel über sich ausplaudern.

smtpd_banner = $myhostname ESMTP

Virtuelle Domains, Benutzer und Aliase

Die verwendeten Benutzerdaten sollen von Postfix als „virtual“ gehandelt werden. Wir arbeiten nicht mit lokal angelegten Benutzern!

Nicht vergessen: Die Userdaten sollen aus der Kopanodatenbank ausgelesen werden.

Unter Berücksichtigung oben erwähnter Eckdaten, wird  die Postfixkonfiguration angepasst:

virtual_alias_maps = hash:/etc/postfix/virtual
virtual_mailbox_maps = mysql:/etc/postfix/mysql-users.cf
virtual_transport = lmtp:localhost:2003
virtual_mailbox_domains = it-yourself.at

virtual_alias_maps: Die Aliasadressen sind in dieser Konfiguraton in einer Datei zu hinterlegen. Die Datei kann so aussehen (/etc/postfix/virtual):

Nachdem die Datei gespeichert wurde, muss sie für Postfix lesbar gemacht werden:

postmap /etc/postfix/virtual

virtual_mailbox_maps: Der Dreh- und Angelpunkt! Hier wird definiert, woher Postfix die Primärmailadresse bezieht.

Der Wert mysql:/etc/postfix/mysql-users.cf verweist auf eine Datei (mysql-users.cf), in der eine MySQL-Abfrage definiert ist, die die Mailadresse aus der Kopanodatenbank ausliest.

Ebenso in der Datei zu hinterlegen, sind die MySQL-Logindaten für die Kopano-MySQL-Datenbank, da sich Postfix sonst nicht mit der Datenbank verbinden und die Abfrage ausführen kann.

user = kopano_usr
password = geheimespasswort
hosts = 127.0.0.1
dbname = kopano_db
query = SELECT value FROM objectproperty where propname = ‚emailaddress‘ and value = ‚%s‘;

Was bedeutet %s in der Abfrage?

Dieser Platzhalter wird von Postfix automatisch mit der Empfängeradresse befüllt (mail to:).

Würde eine Email an daniel.gestl@it-yourself.at ergehen, dann erhält Postfix auf die Abfrage eine positive Rückmeldung. (Emailadresse vorhanden -> Die Email wird an den dagent weitergegeben)

Wenn die Abfrage keinen Rückgabewert liefert, wird die Email abgelehnt. (Sinngemäß mit: User unknown in virtual address table)

virtual_transport: Definiert, dass Postix Emails an das LMTP-Port 2003 weitergibt, sofern sie akzeptiert worden sind. D.h. Postfix übergibt die Mails an den dagent von Kopano.

Der dagent ist fähig, die Emails anhand des Benutzernamens, oder der Emailadresse dem entsprechenden Kopanouser zuzuordnen.

virtual_mailbox_domains: Für welche Domains ist der Postfixserver zuständig.

Lokale Zustellung

Keine der Emails sollen lokal zugestellt werden. Deshalb, muss der Wert für mydestination auf localhost stehen.

Die Relayingkonfiguration

Ein sehr relevantes Thema. Nur Kopanobenutzer dürfen über den Server relayen. Entweder kann die Webapp, die Deskapp, oder eine Activesyncanbindung genutzt werden (Outlook, Smartphone). Ein direkter SMTP Versand von einem beliebigen Client ist NICHT möglich!

Anmerkung: Mit Deskapp und Z-Push beschäftige ich mich in Artikel 3 der Serie.

mynetworks = 127.0.0.0/8
smtpd_relay_restrictions = permit_mynetworks, reject_unauth_destination

smtpd_recipient_restrictions (main.cf):

smtpd_recipient_restrictions = permit_mynetworks,
reject_non_fqdn_recipient,
reject_non_fqdn_hostname,
reject_invalid_hostname,
reject_non_fqdn_recipient,
reject_non_fqdn_sender,
reject_unauth_pipelining,
reject_unverified_recipient

Anmerkung: Mit Deskapp und Z-Push beschäftige ich mich in Artikel 3 der Serie.

Funktionsprüfung

Nach jeder Konfigurationsänderung, müssen die betroffenen Dienste neu gestartet werden.

service postfix restart

Abgesehen davon, ist es immer eine gute Idee, den Status eines neu gestarteten Dienstes zu prüfen.

service postfix status

(Nicht irritieren lassen, hier ist u.a. bereits spamassassin aktiv).

Wichtig ist active (running).

Wir senden eine Email und prüfen die Webapp

Finale – Teil 2: Mit einem beliebigen Mailclient senden wir eine Email an die in  Kopano vorhandene Mailadresse. In meinem Fall ist dies daniel.gestl@it-yourself.at.

Die Email sollte – sofern alles korrekt konfiguriert ist – in der Webapp von Kopano erscheinen. (http://<FQDN oder IP>/webapp)

Perfekt, läuft!

Probleme?

Sofern Probleme auftreten, kann die Logdatei von Postfix überprüft werden.

tail -f /var/log/mail.log

= Echtzeitdarstellung der Logdatei.

Noch ein paar Worte…

Dies ist das Ende von Teil 2 der Kopanoinstallation. In Teil 3 möchte ich mich mit einigen weiteren Modulen von Kopano beschäftigen.

Ebenso ist das Aktivieren des HTTPS-Protokolles ein Thema.

Die Dokumentation

Aufgrund der Vielzahl an Möglichkeiten die diese Groupware bietet, lohnt sich auf jeden Fall ein Blick in die hervorragende Dokumentation.

Hier gehts zu Teil 3…

7 Kommentare

  • Hi Zusammen,

    super how to…jep wirklich…ich habe die ganze Sache auf einem Univention Server laufen und soweit funzt auch alles.
    Ich habe nur ein Problem, wenn ich die Mailkonten der User, die z.T. gmail und co nutzen und andere mit eigener Domain laufen, dass es bei Versenden der Mails Loops gibt.

    Ein Ziel ist, dass die Mails der User auf dem System nicht über extern gehen, zum einen um Trafic zu sparen, ja auch wenn der nichts kostet und zum anderen wegen der schnelleren Zustellung und Datenschutz.

    Any way, soweit funktioniert es mit den gmail und co Adressen nur bei einem User mit einer richtigen Domain und dem Versand an gmail gibt es einen Loop.

    May 12 12:10:08 ucs postfix/smtpd[18153]: connect from localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/smtpd[18153]: 011B263E83A: client=localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/cleanup[18154]: 011B263E83A: message-id=<kcim.59158a00.46e6
    May 12 12:10:09 ucs postfix/qmgr[18119]: 011B263E83A: from=, size=1060, nrcpt=1 (queue active)
    May 12 12:10:09 ucs postfix/smtpd[18153]: disconnect from localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/smtpd[18159]: connect from localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/smtpd[18159]: 8584463E83B: client=localhost[127.0.0.1], orig_queue_id=011B263E83A, orig_client=localhost[127.0.0.
    May 12 12:10:09 ucs postfix/cleanup[18154]: 8584463E83B: message-id=<kcim.59158a00.46e6
    May 12 12:10:09 ucs postfix/qmgr[18119]: 8584463E83B: from=, size=1748, nrcpt=1 (queue active)
    May 12 12:10:09 ucs amavis[17597]: (17597-01) Passed CLEAN {RelayedInternal}, LOCAL [127.0.0.1]:41636 -> , Queue-ID: 011B263E83A, Message-ID: <kcim.59158a00.46e6.055910fa7bMay 12 12:10:08 ucs postfix/smtpd[18153]: connect from localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/smtpd[18153]: 011B263E83A: client=localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/cleanup[18154]: 011B263E83A: message-id=<kcim.59158a00.46e6
    May 12 12:10:09 ucs postfix/qmgr[18119]: 011B263E83A: from=, size=1060, nrcpt=1 (queue active)
    May 12 12:10:09 ucs postfix/smtpd[18153]: disconnect from localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/smtpd[18159]: connect from localhost[127.0.0.1]
    May 12 12:10:09 ucs postfix/smtpd[18159]: 8584463E83B: client=localhost[127.0.0.1], orig_queue_id=011B263E83A, orig_client=localhost[127.0.0.
    May 12 12:10:09 ucs postfix/cleanup[18154]: 8584463E83B: message-id=<kcim.59158a00.46e6
    May 12 12:10:09 ucs postfix/qmgr[18119]: 8584463E83B: from=, size=1748, nrcpt=1 (queue active)
    May 12 12:10:09 ucs amavis[17597]: (17597-01) Passed CLEAN {RelayedInternal}, LOCAL [127.0.0.1]:41636 -> , Queue-ID: 011B263E83A, Message-ID: <kcim.59158a00.46e6.055910fa7b
    May 12 12:10:09 ucs postfix/smtp[18155]: 011B263E83A: to=, relay=127.0.0.1[127.0.0.1]:100
    May 12 12:10:09 ucs postfix/qmgr[18119]: 011B263E83A: removed
    May 12 12:10:10 ucs postfix/smtp[18123]: 8584463E83B: SASL authentication failed; server smtp.gmail.com[74.125.206.109] said: 535-5.7.8 Username and Password not accepted. Learn more at?535 5.7.8 https://support.google.com/mai x126sm4620887wme.12 – gsmtp
    May 12 12:10:10 ucs postfix/smtp[18123]: 8584463E83B: to=, relay=smtp.gmail.com[74.125.20smtp.gmail.com[74.125.206.108] said: 535-5.7.8 Username and Password not accepted. Learn more at?535 5.7.8 https://support.google.com/mai a73sm3279842wrc.58 – gsmtp)
    May 12 12:10:09 ucs postfix/smtp[18155]: 011B263E83A: to=, relay=127.0.0.1[127.0.0.1]:100
    May 12 12:10:09 ucs postfix/qmgr[18119]: 011B263E83A: removed
    May 12 12:10:10 ucs postfix/smtp[18123]: 8584463E83B: SASL authentication failed; server smtp.gmail.com[74.125.206.109] said: 535-5.7.8 Username and Password not accepted. Learn more at?535 5.7.8 https://support.google.com/mai x126sm4620887wme.12 – gsmtp
    May 12 12:10:10 ucs postfix/smtp[18123]: 8584463E83B: to=, relay=smtp.gmail.com[74.125.20smtp.gmail.com[74.125.206.108] said: 535-5.7.8 Username and Password not accepted. Learn more at?535 5.7.8 https://support.google.com/mai a73sm3279842wrc.58 – gsmtp)

    Jemand eine Idee?
    Irgendwie wäre es toll, wenn der dagent merkt, ups dass ist eine interne Mail und erst ganricht den postfix bemüht.
    Denke der kreiert den Loop.

    Gruss Theo

  • Christoph Ostermayer

    Vielen vielen herzlichen Dank für die ausführliche und umfangreiche Anleitung.
    Sie hat mir nicht nur geholfen, kopano aufzusetzen, sondern auch, postfix ein Stück weit zu verstehen…

    Was ich aber noch vermisse, ist der Sendeweg.
    Wie konfiguriere ich Kopano, damit es über Postfix sendet, und Postfix, dass er an einen definierten Smarthost sendet?

    Beim Sendeversuch über Kopano bleibt das Log des Postfix schweigsam, im Kopano kommt nur „Recipients that failed permanently“

    Vielen Dank nochmal!

    • Christoph Ostermayer

      Nachtrag:
      Habe es jetzt doch gefunden, nochmal alle Dienste neu gestartet, dann hat sich auch der Postfix gemeldet. Allerdings musste ich zu mynetworks noch [::1]/128 hinzufügen, da von dieser localhost-Adresse kopano an postfix herangegangen ist.

      Außerdem habe ich mit dem Switch „relayhost“ meine vorgeschaltete MTA/Sophos UTM angeben können, klappt!

    • Das hast du ja selbst lösen können.
      Sobald der MTA auf Port 25 lauscht, sollte er sich auch melden bzw. die Mail versenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.