Właśnie wykonałem ten samouczek, aby skonfigurować serwer pocztowy z poprawkami dovecot i mysql jako backend dla użytkowników wirtualnych.
Teraz większość części działa, mogę połączyć się z POP3 (S) i IMAP (S).
Za pomocą
echo TEST-MAIL | mail [email protected]
działa dobrze, gdy zaloguję się na swoje konto Hotmail, wyświetla wiadomość e-mail.
Działa również w odwrotnej kolejności, dlatego mój wpis MX dla example.com w końcu został rozpowszechniony, więc jestem w stanie odbierać wiadomości e-mail wysyłane z [email protected] na [email protected] i przeglądać je w Thunderbird za pomocą STARTTLS za pośrednictwem IMAP.
Robiąc trochę więcej badań po otrzymaniu komunikatu o błędzie „ 5.7.1: Odmowa dostępu do przekaźnika ” podczas próby wysłania wiadomości e-mail na [email protected] przy użyciu Thunderbirda zalogowanego na [email protected] , zorientowałem się, że mój serwer działa jako „Open Mail Relay”, co - oczywiście - jest złą rzeczą.
Zagłębiając się w opcjonalne części samouczka, takie jak ten komentarz i inne turorial , postanowiłem wykonać te kroki, aby móc wysyłać wiadomości e-mail za pośrednictwem [email protected] przez Mozilla Thunderbird, nie otrzymując komunikatu o błędzie „ 5.7.1 : Odmowa dostępu do przekazywania dalej ”(ponieważ zwykłe serwery pocztowe odrzucają otwarte wiadomości e-mail przekazywane).
Ale teraz napotkałem błąd, próbując uzyskać postfiks pracujący z SMTPS, w /var/log/mail.log czyta
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:
Ten błąd jest rejestrowany zaraz po próbie wysłania wiadomości e-mail z mojego nowo zainstalowanego serwera pocztowego za pomocą SMTP SSL / TLS przez port 465 w Thunderbird. Thunderbird mówi mi, że upłynął limit czasu.
Google ma kilka wyników dotyczących tego problemu, ale nie mogłem go uruchomić z żadnym z nich. Chciałbym tutaj linkować niektóre z nich, ale jako nowy użytkownik mogę używać tylko dwóch hiperłączy.
Mój plik /etc/postfix/master.cf wygląda
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
i nmap mówi mi
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
wygląda mój /etc/postfix/main.cf
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
Pliki * .pem zostały utworzone zgodnie z opisem w powyższym samouczku przy użyciu
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
Myślę, że nie muszę tutaj włączać /etc/dovecot/dovecot.conf , ponieważ logowanie za pomocą imaps i pop3s działa poprawnie zgodnie z logami. Jedynym problemem jest prawidłowe używanie przez Postfiksa samodzielnie wygenerowanych certyfikatów z podpisem własnym.
Każda pomoc doceniona!
EDYCJA: Właśnie próbowałem tego innego samouczka na temat generowania samopodpisanego certyfikatu dla Postfiksa, wciąż otrzymując ten sam błąd. Naprawdę nie wiem, co jeszcze przetestować.
Sprawdziłem również biblioteki SSL, ale wszystko wydaje się w porządku:
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)
Po wykonaniu instrukcji Ansgar Wiechers wreszcie działa.
postconf -n
zawierał wiersze tak, jak powinien. Sprawdzanie certyfikatu / klucza przez openssl wykazało, że oba pliki są prawidłowe.
To rzeczywiście był problem z uprawnieniami! Nie wiedziałem, że chown'owanie plików /etc/ssl/*/postfix.pem do postfix: postfix nie wystarczy, aby postfix mógł odczytać pliki.
postconf -n
część. Skopiowanie i wklejenie skutkowało jednym plikiem cert i niepowiązanym kluczem. Skoncentrowanie się na danych wyjściowych pozwoliło mi zobaczyć literówkę w pliku konfiguracyjnym, który już sprawdziłem, ale nie zauważyłem ...Te instrukcje nie
chmod o= /etc/ssl/private/postfix.pem
mówią nic o tym, który użytkownik jest właścicielem pliku.Na moich urządzeniach
smtpd
proces działa jakopostfix
użytkownik. Sprawdź, czypostfix
użytkownik może uzyskać dostęp/etc/ssl/private/postfix.pem
. A może po prostuchown postfix:postfix /etc/ssl/private/postfix.pem
.Innym oczywistym problemem jest dokładnie to, co mówi komunikat o błędzie: W tym pliku nie ma prawidłowego klucza RSA. Zajrzyj
/etc/ssl/private/postfix.pem
i upewnij się, że zawiera przynajmniej coś, co wygląda jak klucz RSA. Nie wklejaj go do swojego pytania.Właściwie właśnie zauważyłem, że komunikat o błędzie jest przeznaczony do
/etc/ssl/certs/postfix.pem
, nie/etc/ssl/private/postfix.pem
. Sprawdź także własność, uprawnienia i treść/etc/ssl/certs/postfix.pem
.Ten komunikat o błędzie jest trochę mylący. Mówi,
cannot get RSA private key from file /etc/ssl/certs/postfix.pem
ale klucz prywatny powinien być/etc/ssl/private/postfix.pem
. Nie mam wystarczającego doświadczenia z Postfixem używającym TLS, aby wiedzieć, czy jest to błąd Postfix, czy błąd w konfiguracji.źródło
Cert musi pasować do klucza, w moim przypadku nie miał nic wspólnego z uprawnieniami
utwórz samopodpisany certyfikat i klucz https://msol.io/blog/tech/create-a-self-signed-ssl-certificate-with-openssl/
Mam nadzieję że to pomoże
źródło
sprawdź, czy klucz nie ma hasła. Możesz go usunąć za pomocą
jeśli są razem, użyj
Hasło wyśle ostrzeżenie do dzienników, że nie jest w stanie uzyskać klucza prywatnego RSAA, co z kolei wyłącza obsługę TLS. Mam nadzieję, że to komuś pomoże!
źródło