SSL fuer Mail

Supervise Run Skripte für SSL verschlüsselten Zugriff auf Pop3, Imap, Smtp

Leider bringt pdadmin von Hause aus keine Unterstützung für pop3s, Imaps sowie ssmtp (smtps) mit. Dies kann aber einfach und mit wenig Aufwand nachgerüstet werden.

Der Imap-Server Courier, der bei Pd-Admin teil der Standardumgebung ist, kann entsprechend konfiguriert Imaps. Smtps sowie Pop3s werden über stunnel realisiert.

Vorbereitungen

  • stunnel installieren (apt-get install stunnel unter Debian)
  • Zertifikat erstellen. Wir verwenden hierfür folgendes Script. Der Name des Zertifikats wird als Parameter übergeben:
      #!/bin/sh
      echo 'creating key'
      openssl req -new -nodes -out req.pem -keyout key.pem
      openssl rsa -in key.pem -out $1.pem
      openssl x509 -in req.pem -out ca-cert -req -signkey $1.pem -days 999
      cat ca-cert >> $1.pem
      # remove temp files
      echo 'removing temp files'
      rm ca-cert
      rm key.pem
      rm req.pem
      echo 'done'
      echo 'do not forget to move the new key to the correct location'
      echo 'and do the corresponding chown'
    
  • Das entsprechende Zertifikat in /usr/local/pd-admin2/etc/imapd-ssl eintragen

Run Skripte

Im folgenden Run-Skripte für den Betrieb von Imaps, Pop3s sowie Smtps.

Imaps

Das Scipt envconv wird vom normalen Imap Run-Verzeichnis übernommen.:

  #!/bin/sh

  HOSTNAME=`hostname --fqdn`
  rm -rf ./env/*;
  mkdir -p env
  cd env
  cat /usr/local/pd-admin2/etc/imapd | ../envconv
  cat /usr/local/pd-admin2/etc/imapd-ssl | ../envconv
  cd ..
  exec 2>&1
  exec /usr/local/bin/envdir ./env/ \
  /usr/local/bin/softlimit -m 9000000 \
  /usr/local/bin/tcpserver -v -R -H -l $HOSTNAME 0 993 \
  /usr/local/pd-admin2/bin/couriertls -server -tcpd \
  /usr/local/pd-admin2/sbin/imaplogin \
  /usr/local/pd-admin2/bin/imapd Maildir

Pop3s:

  #!/bin/bash

  QMAILDUID=`id -u qmaild`
  NOFILESGID=`id -g qmaild`
  HOSTNAME=`hostname -f`

  exec  /usr/local/bin/softlimit -m 30000000 \
    /usr/local/bin/tcpserver -v -R -H -l 0 0 995 \
    /usr/sbin/stunnel -f -p /usr/local/pd-admin2/certs/mail.pem \
    -l /var/qmail/bin/qmail-popup $HOSTNAME \
    /var/qmail/bin/tcp-env /usr/sbin/logpopauth-pre /bin/checkpoppasswd \
    /usr/bin/logpopauth-post  /var/qmail/bin/qmail-pop3d Maildir

Smtps:

  #!/bin/bash

  QMAILDUID=`id -u qmaild`
  NOFILESGID=`id -g qmaild`
  HOSTNAME=`hostname -f`

  if [ "$HOSTNAME" == "" ]; then
     echo "Kein Hostname gesetzt."
     exit 11
  fi

  exec /usr/local/bin/softlimit -m 80000000 \
    /usr/local/bin/tcpserver -x /etc/tcp.smtp.cdb -H -P -R -u  
    $QMAILDUID -g $NOFILESGID -c 40 -v 0 \
    ssmtp /usr/sbin/stunnel -f -p /usr/local/pd-admin2/share/imapd.pem -l \
    /var/qmail/bin/tcp-env relaylock /var/qmail/bin/qmail-smtpd $HOSTNAME \
    /usr/local/pd-admin2/bin/checksmtppasswd /bin/true 2>&1 |     
    /var/qmail/bin/splogger smtpd 3