Robert R.: Postfix SMTP Auth

Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,

ja!

Jetzt weiß ich nicht mehr weiter:

  
postfix/smtpd[17610]: warning: cannot get RSA private key from file /etc/ssl/postfix/mailserver.pem: disabling TLS support  
  
postfix/smtpd[17610]: warning: TLS library problem: 17610:error:0906406D:PEM routines:PEM_def_callback:problems getting password:pem_lib.c:111:  
  
postfix/smtpd[17610]: warning: TLS library problem: 17610:error:0906A068:PEM routines:PEM_do_header:bad password read:pem_lib.c:458:  
  
postfix/smtpd[17610]: warning: TLS library problem: 17610:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:ssl_rsa.c:669:  
  

Durch das Dist-Upgrade haeb ich lauter neue Versionen und neue Möglichkeiten, bei denen leider nichts automatisch zusammenpasst. Man konfiguriert sich den Wolf und dann gibts den Fehler oben!

Seit drei Tagen kämpfe ich gegen-

  • Debian Wheezy
  • Postfix
  • Dovecot
  • LMTPd
  • Postfixadmin
  • mySQL
    (-Roundcube) noch nicht installiert

Leider funktioniert die SMTP-TLS-Prüfung nicht.
Ich habe so ungefähr 30 Tutorials durch; aus dreien habe ich mir das Beste rausgesucht. Es gibt auch diverse Tipps wegen der Certs. Ich habe eins von StartSSL.

Für den Apache (HTTPs für den Postfixadmin) funktioniern Schlüssel und Cert. IMAP und POP3 funktionieren auch. Der Postfixadmin tuts auch und die Lookups in den Tabellen passen auch - sofern sie denn überhaupt durchgeführt werden (siehe oben: kein Auth, kein Lookup).

Das Problem ist aber scheinbar nicht ungewöhnlich, nur eine Patentlösung hat niemand. Manchmal kann man wohl durch Zusammenlegung der Schlüssel etwas verbessern, aber das hat bei mir auch nicht geklappt.

  
smtpd_tls_cert_file= /etc/ssl/postfix/postfix.pem  
smtpd_tls_key_file = $smtpd_tls_cert_file  
  

Es ist mir ohnehin noch nicht klar, wie das bei Postfix funtkionieren soll. Der Apache benötigt drei Angaben: Cert, Private-Key und Passphrase für den Key.

Bei Postfix kann ich überhaupt keine Passphrase angeben.

Dovecot nimmt die auch.

  
ssl_cert = </etc/ssl/certs/public/ssl.crt  
ssl_key = </etc/ssl/private/mailserver.pem  
ssl_key_password = trallala  
  

Spirituelle Grüße
Euer Robert

--
Möge der Forumsgeist wiederbelebt werden!
  1. postfix/smtpd[17610]: warning: cannot get RSA private key from file /etc/ssl/postfix/mailserver.pem: disabling TLS support

    postfix/smtpd[17610]: warning: TLS library problem: 17610:error:0906406D:PEM routines:PEM_def_callback:problems getting password:pem_lib.c:111:

    Er hat ein Passwortproblem. Ist der Schlüssel passwortgeschützt?

    Es ist mir ohnehin noch nicht klar, wie das bei Postfix funtkionieren soll. Der Apache benötigt drei Angaben: Cert, Private-Key und Passphrase für den Key.

    Bei Postfix kann ich überhaupt keine Passphrase angeben.

    Weil Postfix keine passwortgeschützten Schlüssel unterstützt.

    Der Nutzen eines Passwortes ist reichlich fragwürdig, wenn das Passwort zusammen mit dem Schlüssel gespeichert wird. Irrsinnig wird es, wenn einerseits der Zugriff auf die Schlüsseldatei auf root beschränkt wird (Postfix: werden muss), das Passwort aber in einer Datei landet (Postfix: landen würde), die üblicherweise von jedermann lesbar ist (wie bei der Postfix-Konfiguration eigentlich der Fall).

    Ich habe so ungefähr 30 Tutorials durch; aus dreien habe ich mir das Beste rausgesucht.

    Wie wäre es mal mit der Postfix-Anleitung, Kapitel TLS, Abschnitt Server-side certificate and private key configuration?

    1. Liebe Mitdenker,
      liebe Wissende,
      liebe Neugierige,

      ja!

      postfix/smtpd[17610]: warning: cannot get RSA private key from file /etc/ssl/postfix/mailserver.pem: disabling TLS support

      postfix/smtpd[17610]: warning: TLS library problem: 17610:error:0906406D:PEM routines:PEM_def_callback:problems getting password:pem_lib.c:111:

      Er hat ein Passwortproblem. Ist der Schlüssel passwortgeschützt?

      Ja, schrieb ich ja. Der Apache kommt damit klar. Man wird beim Starten des Dienstes nach dem Key² gefragt, bzw. kann ihn auch in die Virtual-Host-Datei eintragen. Da wird man ihn sicherlich auch dazuladen lassen können.

      Es ist mir ohnehin noch nicht klar, wie das bei Postfix funtkionieren soll. Der Apache benötigt drei Angaben: Cert, Private-Key und Passphrase für den Key.

      Bei Postfix kann ich überhaupt keine Passphrase angeben.

      Weil Postfix keine passwortgeschützten Schlüssel unterstützt.

      Das hatte ich befürchtet.
      Ich ahbe jetzt erst einmal die Snake-oil-Keys benutzt. Ist zwar nicht schön, aber zum Ausprobieren reicht es erstmal. Bei StartSSL bekommt man für dieselbe Domain nur ein Zertifikat und der Key dafür muss imho immer mit Key versehen werden.

      Der Nutzen eines Passwortes ist reichlich fragwürdig, wenn das Passwort zusammen mit dem Schlüssel gespeichert wird. Irrsinnig wird es, wenn einerseits der Zugriff auf die Schlüsseldatei auf root beschränkt wird (Postfix: werden muss), das Passwort aber in einer Datei landet (Postfix: landen würde), die üblicherweise von jedermann lesbar ist (wie bei der Postfix-Konfiguration eigentlich der Fall).

      Naja, ich habe das alles in einem Verzeichnis, das nur vom Postfix-User (und natürlich) Root lesbar ist. Der Dateiname der Keys scheint ja keine Relevanz zu haben, sodass man noch sehen kann, welcher welcher ist...

      Wie wäre es mal mit der Postfix-Anleitung, Kapitel TLS, Abschnitt Server-side certificate and private key configuration?

      Jein. Ich werde das noch alles lesen und durchschauen müssen, wenn es an die Mail-Response-Software geht. Die Mails sollen auch in einer Datenbank, und nicht mehr in einem Verzeichnis auf der Platte gespeichert werden.

      Ich habe auch noch ein nettes Buch dafür. Aber leider stehen die Fehlermeldungen da nirgendwo. Daher die Suche nach den Tutorials/Manuals im Web. Außerdem ging es auch um das Gesamtpaket. Das steht im Postfix-Manual auch nicht alles drin.

      Jetzt funktioniert der der SMTP-Zugriff, leider nur über Port 25. Ich kann auch nicht erkennen, ob verschlüsselt übertragen wird, oder nicht.

        
      postfix/smtpd[27582]: connect from pxxxxxxxx.dip0.t-ipconnect.de[zzz.zzz.zzz.zzz]  
        
      dovecot: auth-worker(27584): mysql(127.0.0.1): Connected to database postfixadmin  
        
      postfix/smtpd[27582]: C4522191E83C: client=pxxxxxxxx.dip0.t-ipconnect.de[zzz.zzz.zzz.zzz], sasl_method=PLAIN, sasl_username=robertroth@example.org  
        
      postfix/cleanup[27588]: C4522191E83C: message-id=<mr3svbav6cntxgbc56kc91e8.1421685884174@email.android.com>  
        
      postfix/qmgr[27271]: C4522191E83C: from=<robertroth@example.org>, size=34280, nrcpt=1 (queue active)  
        
      postfix/smtp[27589]: C4522191E83C: to=<robertroth@online.de>, relay=mx01.emig.kundenserver.de[212.227.17.160]:25, delay=0.87, delays=0.39/0.02/0.33/0.13, dsn=2.0.0, status=sent (250 Requested mail action okay, completed: id=0MZyKF-1YRtmZ27Y7-00LpRq)  
        
      
      

      Bei IMAP steht in der Log-Zeile zumindest TLS:

        
      dovecot: imap-login: Login: user=<robertroth@example.org>, method=PLAIN, rip=xxx.xxx.xxx.xxx, lip=yyy.yyy.yyy.yyy, mpid=27629, TLS, session=<fd+7CwQNTQBQjHut>  
        
      
      

      Ich habe irgendwo gelesen, dass das jetzt grundsätzlich nur noch über Port 25 laufen würde (egal, ob verschlüsselt oder nicht), weiß jetzt aber leider nicht mehr, wo. Kann sein, dass das in irgendeiner Readme direkt von Postfix stand.

      Zufrieden bin ich also noch nicht. Es sind noch zuviele Fragen offen. Aber eigentlich soll ich morgen Erfolg vermelden :-O

      Spirituelle Grüße
      Euer Robert

      --
      Möge der Forumsgeist wiederbelebt werden!
      1. Bei StartSSL bekommt man für dieselbe Domain nur ein Zertifikat und der Key dafür muss imho immer mit Key versehen werden.

        Der Zertifizierer bekommt den privaten Schlüssel überhaupt nicht, insofern kann er einen solchen passwortfreien auch nicht ablehnen. Macht er das doch, hast du irgendwas durcheinandergebracht und solltest tunlichst ein neues Schlüsselpaar erzeugen. Dein privater Schlüssel geht niemanden etwas an!

        Jetzt funktioniert der der SMTP-Zugriff, leider nur über Port 25. Ich kann auch nicht erkennen, ob verschlüsselt übertragen wird, oder nicht.

        Steht im Protokoll, wenn du smtpd_tls_loglevel auf 1 setzt:

        postfix/smtpd[5277]: connect from omp1045.mail.bf1.yahoo.com[98.139.212.236]
        postfix/smtpd[5277]: setting up TLS connection from omp1045.mail.bf1.yahoo.com[98.139.212.236]
        postfix/smtpd[5277]: Anonymous TLS connection established from omp1045.mail.bf1.yahoo.com[98.139.212.236]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)

        Es gibt auch noch smtp_tls_loglevel für ausgehende Verbindungen.

        1. Liebe Mitdenker,
          liebe Wissende,
          liebe Neugierige,

          ja!

          Bei StartSSL bekommt man für dieselbe Domain nur ein Zertifikat und der Key dafür muss imho immer mit Key versehen werden.

          Der Zertifizierer bekommt den privaten Schlüssel überhaupt nicht, insofern kann er einen solchen passwortfreien auch nicht ablehnen. Macht er das doch, hast du irgendwas durcheinandergebracht und solltest tunlichst ein neues Schlüsselpaar erzeugen. Dein privater Schlüssel geht niemanden etwas an!

          Den private Key hat der auch nicht bekommen, sondern eine zusätzliche Passphrase für das Zertifikat.

          Jetzt funktioniert der der SMTP-Zugriff, leider nur über Port 25. Ich kann auch nicht erkennen, ob verschlüsselt übertragen wird, oder nicht.

          Steht im Protokoll, wenn du smtpd_tls_loglevel auf 1 setzt:

          postfix/smtpd[5277]: connect from omp1045.mail.bf1.yahoo.com[98.139.212.236]
          postfix/smtpd[5277]: setting up TLS connection from omp1045.mail.bf1.yahoo.com[98.139.212.236]
          postfix/smtpd[5277]: Anonymous TLS connection established from omp1045.mail.bf1.yahoo.com[98.139.212.236]: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)

          Es gibt auch noch smtp_tls_loglevel für ausgehende Verbindungen.

          Muss ich gleich nochmal ausprobieren. Heute habe ich den SSH-Zugang laufen lassen.

          Spirituelle Grüße
          Euer Robert

          --
          Möge der Forumsgeist wiederbelebt werden!
          1. Liebe Mitdenker,
            liebe Wissende,
            liebe Neugierige,

            ja!

            Jetzt funktioniert der der SMTP-Zugriff, leider nur über Port 25. Ich kann auch nicht erkennen, ob verschlüsselt übertragen wird, oder nicht.

            Steht im Protokoll, wenn du smtpd_tls_loglevel auf 1 setzt.

            Muss ich gleich nochmal ausprobieren. Heute habe ich den SSH-Zugang laufen lassen.

            Auf Level 2 müllt er das Log auch schon richtig zu. Da ist der Overhead dann mehrfach größer, als der Mailinhalt :-O

            Es wird eine Verschlüsselung ausgehandelt. Ob die dann auch benutzt wird, muss ich den Hai mal fragen. Das geht aber nicht von hier.

            Jedenfalls geht die Kontaktaufnahme nur noch über Port 25. Es wird dann ausgehandelt, dass TLS verlangt ist. Wenn ich den Schlüssel wegnehme, wird abgebrochen.

            Scheint also jetzt alles zu funktionieren, außer, dass noch ein vernünftiger Schlüssel fehlt.

            Spirituelle Grüße
            Euer Robert

            --
            Möge der Forumsgeist wiederbelebt werden!
      2. Moin Robert,

        Ich ahbe jetzt erst einmal die Snake-oil-Keys benutzt.

        Warum benutzt du diese Nomenklatur? Was stimmt an deinen Keys nicht?

        Ist zwar nicht schön, aber zum Ausprobieren reicht es erstmal. Bei StartSSL bekommt man für dieselbe Domain nur ein Zertifikat und der Key dafür muss imho immer mit Key versehen werden.

        Du meinst „und der Key dafür muss immer mit einer Passphrase versehen werden?“ Warum? Wenn jemand Zugriff hat auf deine Kiste hilft dir das Zertifikat eh nicht mehr, das kann er im Zweifel einfach austauschen. Und der Key wird nicht stärker oder schwächer mit der Passphrase.

        Oder meinst du, du hast dir von StartSSL einen Key erstellen lassen? Dann wäre er natürlich wirklich nutzlos, aber auch hier egal ob er eine Passphrase hat oder nicht.

        Die Passphrase macht halt vor allem dann Sinn, wenn man den Zugriff nicht einschränken kann, etwa beim E-Mail-Verkehr.

        LG,
         CK

        1. Liebe Mitdenker,
          liebe Wissende,
          liebe Neugierige,

          ja!

          Warum benutzt du diese Nomenklatur? Was stimmt an deinen Keys nicht?

          Ist zwar nicht schön, aber zum Ausprobieren reicht es erstmal. Bei StartSSL bekommt man für dieselbe Domain nur ein Zertifikat und der Key dafür muss imho immer mit Key versehen werden.

          Du meinst „und der Key dafür muss immer mit einer Passphrase versehen werden?“ Warum? Wenn jemand Zugriff hat auf deine Kiste hilft dir das Zertifikat eh nicht mehr, das kann er im Zweifel einfach austauschen. Und der Key wird nicht stärker oder schwächer mit der Passphrase.

          Ich habe das mit den Keys das erste Mal gemacht und nun hat mein Kollege den verschlüsselten Privat Key einfach wieder entschlüsselt und es funktioniert damit.

          openssl rsa -in <Quelle> -out <Ziel>

          StartSSL hat den Private Key niemals erhalten von uns. Da habe ich wohl etwas durcheinander gebracht. Aber sie haben trotzdem eine Passphrase verlangt für das Zertifikat. Was sie damit angestellt haben, weiß ich nicht. Vielleicht kann man damit die Echtheit des Zertifikates später nochmal feststellen?

          Allerdings schreibt Postfix jetzt "Untrusted TLS connection established". Das geht mir jetzt nicht in den Sinn. Denn am Schlüsselpaar und dem Cert haben wir ja nichts verändert, außer dass der Private Key jetzt wieder ohne zusätzlichen Schlüssel auf der Platte liegt. Ist jetzt meine Tagesaufgabe, das rauszufinden.

          "Ich habe ja die Domain bei StartSSL verbrannt für einen weiteren kostenlosen Schlüssel" also darf ich jetzt zusehen, wie ich es wieder richte.

          Spirituelle Grüße
          Euer Robert

          --
          Möge der Forumsgeist wiederbelebt werden!
          1. Liebe Mitdenker,
            liebe Wissende,
            liebe Neugierige,

            ja!

            "Ich habe ja die Domain bei StartSSL verbrannt für einen weiteren kostenlosen Schlüssel" also darf ich jetzt zusehen, wie ich es wieder richte.

            Fällt mir gerade auf, er meinte natürlich "Zertifikat" für einen Public Key. Und da soll ich mich jetzt noch zurechtfinden als Neuling in dem Bereich!. Ich habe bisher immer nur die Mailserver-Einrichtung gemacht und alles fertig vorbereitet bekommen.

            Seit der Umstellung auf die neuen Versionen ist alles etwas anders, die Zertifikatserzeugung sicher nicht, aber das war bisher nicht meine Sache.

            Spirituelle Grüße
            Euer Robert

            --
            Möge der Forumsgeist wiederbelebt werden!
          2. Moin Robert,

            StartSSL hat den Private Key niemals erhalten von uns. Da habe ich wohl etwas durcheinander gebracht. Aber sie haben trotzdem eine Passphrase verlangt für das Zertifikat. Was sie damit angestellt haben, weiß ich nicht. Vielleicht kann man damit die Echtheit des Zertifikates später nochmal feststellen?

            Jain. Das ist ein challenge password, ein shared secret zwischen dir und StartSSL, dass im CSR eingebettet wird (StartSSL modifiziert das CSR stark). Mit dem Zertifikat hat das so erstmal nichts zu tun. Das kann der SSL issuer benutzen um dich zu einem späteren Zeitpunkt zu authentifizieren. Die meisten issuer benutzen es, um dich zu authentifizieren wenn sie dir das Cert neu ausstellen müssen, etwa weil du es verloren hast.

            Allerdings schreibt Postfix jetzt "Untrusted TLS connection established".

            Das heisst nur, dass eine TLS-Verbindung aufgebaut wurde mit einem Zertifikat dessen Issuer nicht bekannt ist, etwa weil du kein CA-Bundle angegeben hast oder weil er nicht im CA-Bundle enthalten ist. Siehe auch smtp_tls_CAfile bzw smtp_tls_CApath.

            LG,
             CK