Postfix “uyarı: RSA özel anahtarı dosyadan alınamıyor”


14

Ben sadece sanal kullanıcılar için arka uç olarak dovecot ve mysql ile bir postfix posta sunucusu kurmak için bu öğretici takip etti .

Şimdi çoğu parçayı çalıştırdım, POP3 (S) ve IMAP (S) 'ye bağlanabiliyorum.

kullanma

echo TEST-MAIL | mail myaccount@hotmail.com

hotmail hesabımda oturum açtığımda e-postayı gösteriyor.

Aynı zamanda ters dolayısıyla benim MX girişi çalışır example.com ben gönderilen e-postaları almak mümkün oluyorum böylece, son olarak yayılır olmuştur myaccount@hotmail.com için myvirtualuser@example.com ve Thunderbird IMAP üzerinden STARTTLS kullanarak görüntüleyebilirsiniz.

" 5.7.1: Aktarma reddedildi " hata mesajını aldıktan sonra biraz daha araştırma yapmak, Thunderbird'ü myvirtualuser@example.com'a giriş yaparak myaccount@hotmail.com adresine posta göndermeye çalışırken sunucumun hareket ettiğini anladım Tabii ki, kötü bir şey olan "Açık Posta Geçişi" olarak.

Bu yorum ve diğer turorial gibi öğreticinin isteğe bağlı bölümlerini daha fazla inceleyerek , bu mesajı tamamlamaya karar verdim ve hata mesajını alamadan Mozilla Thunderbird aracılığıyla myvirtualuser@example.com üzerinden posta gönderebilmek için " 5.7.1 : Geçiş erişimi reddedildi "(artık yaygın posta sunucuları açık geçişli e-postaları reddettiği için).

Ama şimdi de, SMTPS ile çalışan postfix'i almaya çalışırken bir hata ile karşılaştım /var/log/mail.log okur

Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: cannot get RSA private key from file /etc/ssl/certs/postfix.pem: disabling TLS support
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: ANY PRIVATE KEY:
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:ssl_rsa.c:669:

Thunderbird'deki 465 numaralı bağlantı noktası üzerinden SMTP SSL / TLS kullanarak yeni yüklenen posta sunucumdan posta göndermeye çalıştıktan hemen sonra bu hata günlüğe kaydedilir. Thunderbird bana bir zaman aşımı oluştuğunu söylüyor.

Google'ın bu sorunla ilgili birkaç sonucu var, ancak bunlardan hiçbiriyle çalışamadım. Bunlardan bazılarını buraya bağlardım, ancak yeni bir kullanıcı olarak sadece iki köprü kullanmama izin verildi.

Benim /etc/postfix/master.cf oluşacağı

smtp      inet  n       -       -       -       -       smtpd
smtps     inet  n       -       -       -       -       smtpd
   -o smtpd_tls_wrappermode=yes
   -o smtpd_sasl_auth_enable=yes

ve nmap bana söylüyor

PORT     STATE SERVICE
[...]
465/tcp  open  smtps
[...]

Benim /etc/postfix/main.cf oluşacağı

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
#smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem            #default postfix generated
#smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key #default postfix generated
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smptd_tls_key_file = /etc/ssl/private/postfix.pem
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smptd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
mailbox_command = /usr/lib/dovecot/deliver

* .Pem dosyaları, yukarıdaki öğreticide açıklandığı gibi oluşturulmuştur.

Postfix
To create a certificate to be used by Postfix use:

openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem

Do not forget to set the permissions on the private key so that no unauthorized people can read it:

chmod o= /etc/ssl/private/postfix.pem

You will have to tell Postfix where to find your certificate and private key because by default it will look for a dummy certificate file called "ssl-cert-snakeoil":

postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem

Sanırım /etc/dovecot/dovecot.conf'u buraya eklemek zorunda değilim, imaps ve pop3s ile giriş günlüklere göre iyi çalışıyor. Tek sorun postfix'in kendiliğinden oluşturulan, kendinden imzalı sertifikaları doğru şekilde kullanmasıdır.

Herhangi bir yardım takdir!

EDIT: Ben sadeceaynı hatayı alıyorum postfix için kendinden imzalı bir sertifika oluşturma bu farklı öğretici denedim. Başka ne test edeceğimi gerçekten bilmiyorum.

Ayrıca SSL kütüphanelerini kontrol ettim, ama hepsi iyi görünüyor:

  root@domain:~# ldd /usr/sbin/postfix
    linux-vdso.so.1 =>  (0x00007fff91b25000)
    libpostfix-global.so.1 => /usr/lib/libpostfix-global.so.1 (0x00007f6f8313d000)
    libpostfix-util.so.1 => /usr/lib/libpostfix-util.so.1 (0x00007f6f82f07000)
    libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f6f82cb1000)
    libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00007f6f82910000)
    libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00007f6f826f7000)
    libdb-4.8.so => /usr/lib/libdb-4.8.so (0x00007f6f8237c000)
    libnsl.so.1 => /lib/libnsl.so.1 (0x00007f6f82164000)
    libresolv.so.2 => /lib/libresolv.so.2 (0x00007f6f81f4e000)
    libc.so.6 => /lib/libc.so.6 (0x00007f6f81beb000)
    libdl.so.2 => /lib/libdl.so.2 (0x00007f6f819e7000)
    libz.so.1 => /usr/lib/libz.so.1 (0x00007f6f817d0000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00007f6f815b3000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f6f83581000)

Ansgar Wiechers talimatlarını izledikten sonra sonunda çalışıyor.

postconf -nçizgileri olması gerektiği gibi içeriyordu. Openssl üzerinden yapılan sertifika / anahtar kontrolü, her iki dosyanın da geçerli olduğunu gösterdi.

Yani gerçekten bir izin sorunu oldu! Postfix için /etc/ssl/*/postfix.pem dosyalarını chown'ing'in postfix'in dosyaları okuması için yeterli olmadığını bilmiyordum.

Yanıtlar:


16

Öğesinin içeriği main.cfmutlaka etkin Postfix yapılandırmanızı temsil etmez. postconf -nAşağıdaki iki parametrenin çıkışını kontrol edin :

smtpd_recipient_restrictions = 
  permit_mynetworks, 
  permit_sasl_authenticated, 
  reject_unauth_destination
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

Eğer $mynetworkslocalhost ve sınırlıdır $smtpd_recipient_restrictionsgösterileri permit_mynetworks, permit_sasl_authenticated, reject_unauth_destinationilk üç kısıtlamaları gibi, o zaman geçişe açık değildir.

/etc/ssl/private/postfix.pemGeçerli bir anahtar ve /etc/ssl/certs/postfix.pemgeçerli bir sertifika içerdiğini doğrulayın :

openssl rsa -in /etc/ssl/private/postfix.pem -check -noout
openssl x509 -in /etc/ssl/certs/postfix.pem -text -noout

Postfix'in dosyaya erişip erişemeyeceğini de kontrol etmeniz gerekir. Benim sunucuda, izinleri ile ilgili /etc/ssl/privateolan

drwx--x---  2 root ssl-cert  4096 Aug 03 01:55 private/

chownDizin izinleri Postfix'in içindeki herhangi bir dosyaya erişmesini engellediğinden, yalnızca anahtar dosyanın ing.

Kurulumunuzu basitleştirmeyi deneyin. Sertifika ve anahtarı tek bir dosyaya yerleştirin:

cat /etc/ssl/*/postfix.pem > /etc/postfix/server.pem
chmod 640 /etc/postfix/server.pem
chown postfix:postfix /etc/postfix/server.pem

ve şu şekilde değiştirin main.cf:

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

Postfix'i yeniden başlatın ve sunucunun anahtara erişip erişemeyeceğini görün.


Bu sorunu düzelttim , çok teşekkürler, ikiniz de Ladadadada ve Ansgar Wiechers .
vay

Rol için teşekkürler postconf -n. Kopyala ve yapıştır, bir sertifika dosyası ve ilgisiz bir anahtar ile sonuçlandı ve bunun çıktısına odaklandığım, daha önce kontrol ettiğim ancak kaçırdığım yapılandırma dosyasındaki yazım
hatasını görmeme izin verdi

2

Bu talimatlar chmod o= /etc/ssl/private/postfix.pem, dosyanın hangi kullanıcının sahibi olduğu hakkında hiçbir şey söylemez.

Kutularımda, smtpdişlem postfixkullanıcı olarak çalışır . postfixKullanıcının erişebildiğini kontrol edin /etc/ssl/private/postfix.pem. Ya da muhtemelen sadece chown postfix:postfix /etc/ssl/private/postfix.pem.

Diğer belirgin sorun, hata mesajının tam olarak söylediği şeydir: Bu dosyada geçerli bir RSA anahtarı yok. Bir göz atın /etc/ssl/private/postfix.pemve en azından bir RSA anahtarına benzeyen bir şey içerdiğinden emin olun. Sorunuza yapıştırmayın.

Aslında sadece hata mesajı için olduğunu fark /etc/ssl/certs/postfix.pemdeğil /etc/ssl/private/postfix.pem. Sahipliğini, izinlerini ve içeriğini /etc/ssl/certs/postfix.pemde kontrol edin.


Bu hata mesajı biraz kafa karıştırıcı. Diyor cannot get RSA private key from file /etc/ssl/certs/postfix.pemama özel anahtar içeri girmeli /etc/ssl/private/postfix.pem. Postfix TLS kullanarak bunun bir hata Postfix veya yapılandırmanızdaki bir hata olup olmadığını bilmek için yeterli deneyime sahip değilim.


Postfix için her iki dosyayı da seçtim: postfix sonra postfix'i yeniden başlattım, ancak bir e-posta göndermeye çalışmak hala /var/log/mail.log
phew

root @ domain: / etc / ssl / certs # ls -l postfix.pem -rw-r - r-- 1 postfix postfix 1363 Eyl 28 16:36 postfix.pem ve ile başlayan sertifika içeriği içeriyor gibi görünüyor - --- ----- SERTİFİKA BAŞLANGICI kadar veri içeren ----- SERTİFİKA SONU -----
phew

Ben de bunu merak ediyordum, bu yüzden dosyaları değiştirmeyi denedim. Ancak / certs / içindeki dosya "---- BAŞLANGIÇ BELGESİ -----" sertifika başlığını içerdiğinden bu bir anlam ifade etmiyor. Yine de yardımlarınız için teşekkürler.
öğk


0

anahtarın üzerinde bir parola olup olmadığını kontrol edin. İle kaldırabilirsiniz

openssl rsa -in key.pem -out newkey.pem

eğer birlikte iseler kullanın

openssl rsa -in mycert.pem -out newcert.pem
openssl x509 -in mycert.pem >>newcert.pem

Parola, günlüklerde RSAA özel anahtarını alamadığını ve TLS desteğini devre dışı bıraktığını belirten bir uyarı verecektir. Umarım bu birine yardımcı olur!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.