나는 postfix, dovecot, opendkim 및 spamassassin을 사용하여 메일 서버를 설정했습니다. 많은 어려움 끝에 저는 들어오는 메일을 작동시킬 수 있었습니다. 심지어 그 서버를 사용하여 계정을 설정하기도 했습니다.
그런데 메일을 보내는 데 문제가 있습니다. 내 ISP는 비록 뚱뚱하지만 포트 25를 통한 통신을 차단합니다. 이는 분명히 메시지 전송이 작동하지 않는다는 것을 의미합니다. 다음은 내 이전 Protonmail 계정(외부 컴퓨터의 Neomutt에서)으로 전송을 시도한 후의 로그입니다.
postfix/qmgr[653083]: 7E2BD9006AB: from=<[email protected]>, size=479, nrcpt=1 (queue active)
// disconnect from external client
postfix/smtp[653086]: connect to mail.protonmail.ch[185.70.41.101]:25: Connection timed out
postfix/smtp[653093]: connect to mail.protonmail.ch[185.70.41.101]:25: Connection timed out
postfix/smtp[653086]: connect to mailsec.protonmail.ch[185.70.40.102]:25: Connection timed out
postfix/smtp[653086]: 44DED90068A: to=<[email protected]>, relay=none, delay=115, delays=55/0.05/60/0, dsn=4.4.1, status=deferred (connect to mailsec.protonmail.ch[185.70.40.102]:25: Connection timed out)
그렇군요... ISP가 포트 25(발신)를 차단하므로 이를 우회할 수 있는 방법이 필요합니다. 내가 많이 본 방법 중 하나는 외부 smtpd를 사용하도록 구성하는 것입니다. 내 ISP를 사용하거나(이상적이지 않음) 내 친구의 VPS에 postfix를 설정해야 합니다(완전히 이상적이지도 않지만 다른 모든 방법이 실패하면 그에게 물어볼 것입니다). 기술적으로 ISP에 포트 25의 잠금을 해제하도록 요청할 수 있지만 아마도 작동하지 않을 것입니다.
그런데 나가는 메일을 모두 외부 서버의 포트 465나 587로 라우팅하고 싶은데,아니요25, 내 로컬 접미사 설정만 사용합니다. 온라인에서 이에 대한 정보를 찾을 수 없으며 나가는 smtp 포트를 대체 포트로 변경해도 여전히 master.cf
25를 통해 콘텐츠가 전송됩니다. 그렇다면 어떻게 해야 할까요? 내가 할 수 있는 일이 정말 아무것도 없다면 친구에게 VPS를 요청하면 됩니다.
postconf -n
:
alias_database = $alias_maps
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/bin
compatibility_level = 3.6
daemon_directory = /usr/lib/postfix/bin
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
home_mailbox = Mail/Inbox/
html_directory = no
inet_protocols = ipv4
mail_owner = postfix
mailbox_command = /usr/lib/dovecot/deliver
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
meta_directory = /etc/postfix
milter_default_action = accept
milter_protocol = 6
mydestination = $myhostname $mydomain localhost localhost.localdomain
mydomain = doma.in
myhostname = mail.doma.in
mynetworks = 127.0.0.0/8 [::1]/128 MY.IP/32 192.168.86.1 192.168.86.0/24
newaliases_path = /usr/bin/newaliases
non_smtpd_milters = inet:127.0.0.1:12301
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix
relay_domains = $mydestination
sample_directory = /etc/postfix
sendmail_path = /usr/bin/sendmail
setgid_group = postdrop
shlib_directory = /usr/lib/postfix
smtp_tls_CAfile = /etc/letsencrypt/live/doma.in/cert.pem
smtp_tls_loglevel = 1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_security_level = may
smtpd_milters = inet:127.0.0.1:12301
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/doma.in/fullchain.pem
smtpd_tls_exclude_ciphers = aNULL, LOW, EXP, MEDIUM, ADH, AECDH, MD5, DSS, ECDSA, CAMELLIA128, 3DES, CAMELLIA256, RSA+AES, eNULL
smtpd_tls_key_file = /etc/letsencrypt/live/doma.in/privkey.pem
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_security_level = may
tls_preempt_cipherlist = yes
unknown_local_recipient_rject_code = 550
답변1
다음 용도로 포트 587을 사용할 수 있습니다.
postconf -ev relayhost=smtp.example.com:submission
포트 587을 사용하는 경우 릴레이 호스트는 인증을 요구할 가능성이 높으며, 이 경우 파일에 필요한 사용자 이름과 비밀번호를 지정해야 합니다 /etc/postfix/sasl_passwd
.
선택한 릴레이 호스트의 DNS 이름이 기본 이름이 아닌 경우(즉, dig -x <ip-address-of-relay-host>
릴레이 호스트에 대해 다른 이름이 반환되는 경우) 릴레이 호스트 이름을 괄호 안에 넣고 따옴표를 추가하여 정식 이름 확인을 보호할 수 있습니다. 쉘의 괄호:
postconf -ev "relayhost=[smtp.example.com]:submission"
답변2
ISP에 포트 25번 차단을 해제해 달라고 요청했습니다. 아쉽게도 회사 고위 경영진이 사용자에게 이 포트 사용을 허용하지 않아 차단을 해제할 수 없었습니다.
그래서 어쩔 수 없이 VPS를 구매했는데 효과가 아주 좋았습니다. VPN, 더 까다로운 서버 작업(예: Matrix Home Server)을 위한 빠른 CPU 등 이메일 외에도 많은 것에 유용한 것으로 나타났습니다.
불행하게도 나는 postfix를 이와 같이 동작하게 만드는 방법을 결코 알아내지 못했습니다. 혹시 어떻게 하는지 아시는 분 계시면 답변 부탁드립니다.
ISP가 포트 25를 차단하는 경우 VPS에 투자하거나 ISP 전환을 고려하십시오.
답변3
/etc/services 파일을 편집하고 포트 25를 587로 변경한 후 서비스 postfix를 저장하고 다시 시작합니다. Postfix는 포트 25에서 수신 대기를 중지하고 587로 전환합니다. 이것이 문제가 될지는 모르겠지만 해결책입니다.