방금 이 튜토리얼 을 따라 가상 사용자를위한 백엔드로 dovecot 및 mysql을 사용하는 postfix 메일 서버를 설정했습니다.
이제 대부분의 부분이 작동하고 POP3 (S) 및 IMAP (S)에 연결할 수 있습니다.
사용
echo TEST-MAIL | mail myaccount@hotmail.com
핫메일 계정에 로그인하면 이메일이 표시됩니다.
또한 반대로 작동합니다. example.com에 대한 MX 항목이 최종적으로 전파되었으므로 myaccount@hotmail.com 에서 myvirtualuser@example.com으로 전송 된 전자 메일을 수신 하고 IMAP을 통해 STARTTLS를 사용하여 Thunderbird에서 볼 수 있습니다.
Thunderbird가 myvirtualuser@example.com 에 로그인되어있는 상태 에서 myaccount@hotmail.com으로 메일을 보내려고 할 때 " 5.7.1 : 릴레이 액세스가 거부되었습니다 " 라는 오류 메시지가 나타난 후 조금 더 조사한 결과 서버가 작동하는 것으로 나타났습니다. "오픈 메일 릴레이"로서, 물론 이것은 나쁜 것입니다.
이 의견 과 다른 turorial 과 같이 튜토리얼의 선택적 부분을 더 파고 들어 , 나는이 단계를 완료 하고 Mozilla Thunderbird 를 통해 myvirtualuser@example.com을 통해 메일을 보낼 수 있고 " 5.7.1 오류 메시지가 표시되지 않습니다. : 릴레이 액세스가 거부되었습니다 ( "일반 메일 서버는 열려있는 릴레이 된 전자 메일을 거부하므로).
하지만 이제는 /var/log/mail.log 에서 SMTPS로 postfix 작업을 시도하는 중 오류가 발생 했습니다.
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의 포트 465를 통해 SMTP SSL / TLS를 사용하여 새로 설치된 메일 서버에서 메일을 보내려고하면이 오류가 기록됩니다. Thunderbird는 시간 초과가 발생했음을 알려줍니다.
Google은 그 문제와 관련하여 몇 가지 결과를 얻었지만 그 중 어느 것도 문제를 해결할 수 없었습니다. 여기에 그중 일부를 링크하지만 새 사용자로서 두 개의 하이퍼 링크 만 사용할 수 있습니다.
내 /etc/postfix/master.cf 는 다음과 같습니다.
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
과 의 nmap은 나에게 말한다
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
내 /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
* .pem 파일은 위의 자습서에서 설명한대로 다음을 사용하여 작성되었습니다.
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
로그에 따라 imaps 및 pop3s를 통한 로그인 이 제대로 작동하므로 /etc/dovecot/dovecot.conf를 여기 에 포함시킬 필요가 없습니다 . 문제는 postfix가 자체 생성 된 자체 서명 인증서를 올바르게 사용하도록하는 것입니다.
어떤 도움을 주셔서 감사합니다!
편집 : 방금postfix에 대한 자체 서명 된 인증서 생성에 대한 이 다른 자습서 를시도했지만여전히 동일한 오류가 발생합니다. 나는 정말로 무엇을 테스트 해야할지 모른다.
SSL 라이브러리도 확인했지만 모두 괜찮은 것 같습니다.
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)
다음 후 안스 Wiechers의 지침을 자사의 마지막 작업입니다.
postconf -n
라인을 포함해야합니다. openssl을 통한 인증서 / 키 검사에서 두 파일이 모두 유효한 것으로 나타났습니다.
따라서 실제로 권한 문제였습니다! postfix : postfix에 /etc/ssl/*/postfix.pem 파일을 chown하는 것이 postfix가 파일을 읽기에 충분하지 않다는 것을 몰랐습니다.