~~META: date created = 2012-12-29 18:38 &date modified = 2012-12-29 18:38 ~~ ====== IMAPS Proxy mit Perdition ====== Ich hatte die Herausforderung, IMAP Mailboxen, die auf einem Server hinter der Firewall liegen und lokal bzw. über Webmail erreichbar waren auch nativ über IMAPS im Internet anzubieten. Ich sträubte mich gegen das stupide Port-Forwarding des IMAP Ports vom externen Interface der Firewall auf den Mailserver und entschied mich für den Einsatz eines IMAP Proxies – die Wahl fiel auf [[http://horms.net/projects/perdition/|Perdition]]. Der Proxy rüstet auch die fehlende Verschlüsselung nach. ===== Ausgangslage: ===== * Courier-Imapd Version steinalt (Debian 3.2) Installation am Mailserver (172.16.1.9) * Hinreichend aktuelle Debian Installation (6.0) auf dem DMZ-Host (192.168.1.7) * ca 30 Mailboxen angelegt * Self-Signed Certificate ausreichend ===== Folgendes Kochrezept brachte bei mir den Erfolg: ===== - Perdition-IMAP/POP3/Sieve-Proxy auf Proxy Host installieren # aptitude install perdition - Perdition einstweilen stoppen # /etc/init.d/perdition stop - Nicht benötigte Dienste deaktivieren, korrekte Library für Regular Expressions Mapping aktivieren: # grep -v ^# /etc/default/perdition | grep -v ^$ RUN_PERDITION=yes POP3=no POP3_FLAGS= POP3S=no POP3S_FLAGS= IMAP4=no IMAP4_FLAGS= IMAP4S=yes IMAP4S_FLAGS="-M /usr/lib/libperditiondb_posix_regex.so.0" MANAGESIEVE=no MANAGESIEVE_FLAGS= - Perdition dazu bringen, outgoing PLAIN IMAP zu sprechen – dazu in /etc/perdition/perdition.conf ssl_mode ssl_listen eintragen. - Zertifikat erzeugen und installieren # cd /tmp # openssl req -new -x509 -newkey rsa:2048 -nodes -out perdition.crt.pem -keyout perdition.key.pem -days 730 # mv perdition.*.pem /etc/perdition/ - Generische Mapping-Table erstellen (alle Mailboxen auf dem gleichen IMAP-Host): # grep -v ^# /etc/perdition/popmap.re | grep -v ^$ .*: 172.16.1.9:143 - Kosmetik: Timing Problem beim Start von Perdition beheben – in /etc/init.d/perdition im IMAP4S Block zwischen “start-stop-daemon” und dem “if [ ! -e /var/run/perdition.imaps/perdition.imaps.pid ]; then” ein “sleep 2” einfügen – evtl. braucht start-stop-daemon zu lange um beim Start sein PID File zu erzeugen der ganze Block sieht dann so aus: if [ "$IMAP4S" = "yes" ]; then start-stop-daemon --start --verbose \ --pidfile /var/run/perdition.imaps/perdition.imaps.pid \ --exec /usr/sbin/perdition.imaps -- $FLAGS $IMAP4S_FLAGS sleep 2 if [ ! -e /var/run/perdition.imaps/perdition.imaps.pid ]; then echo "Unable to start IMAP4S Daemon (maybe another process is listening to the same port?)" fi fi - Perdition starten# /etc/init.d/perdition start Starting /usr/sbin/perdition.imaps... ===== Abschließend ===== * Für mich hat es so funktioniert, gibt natürlich keine Gewährleistung, dass dieses Setup nicht eure Mailboxen frisst – Backups sind immer hilfreich. * Perdition logged defaultmäßig in die Mail-Syslog-Facility – bei Debian Standard ohne Anpassungen also nach /var/log/mail.log * Setzt man “debug” und “connection_logging” in der /etc/perdition/perdition.conf kann man Verbindungsfehlern reicht leicht auf die Spur kommen – Achtung: Es werden auch die Passwörter im Klartext mitgelogged – für Produktiveinsatz unbedingt wieder deaktivieren! {{tag>kb linux imap mailserver}}