Ubuntu 18.04를 실행하는 VPS에서 SMTP를 사용하여 이메일 보내기를 설정하려고 합니다. 나는 postfix, nodemailer를 사용하고 있습니다.
내가 다음에서 보낼 때[이메일 보호됨], Gmail 계정으로 이동하면 Gmail 스팸 폴더에 갇히게 됩니다. 저는 6.8점을 받았습니다www.mail-tester.com, 다음 공제액 포함:
-1.274 RDNS_NONE rDNS가 없는 호스트에 의해 내부 네트워크로 전달됨 이는 호스트 이름에 대해 구성된 rDNS가 없거나 rDNS가 전송 IP와 일치하지 않음을 나타낼 수 있습니다.
-0.896 SPF_HELO_SOFTFAIL SPF: HELO가 SPF 레코드와 일치하지 않습니다(소프트페일) 소프트페일
귀하의 메시지는 DKIM으로 서명되지 않았습니다
내 TXT 레코드가 올바른 것 같습니다.
"v=spf1 ip4:[removed-server-ip] include:_spf.mail.hostinger.com ~all"
/etc/postfix/main.cf:
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = [removed-domain-name].com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost.[removed-domain-name].com, [removed-domain-name].com, [removed-domain-name]$
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
inet_protocols = all
policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service unix:private/policyd-spf
노드메일러 방법:
"use strict";
const nodemailer = require("nodemailer");
let transporter = nodemailer.createTransport({
sendmail: true,
newline: 'unix',
path: '/usr/sbin/sendmail',
secure: true,
})
let info = await transporter.sendMail({
from: '"[removed-domain-name].com" <no-reply@[removed-domain-name].com>', // sender address
to: req.body.to, // list of receivers
subject: "Hello", // Subject line
text: req.body.message, // plain text body
html: req.body.message, // html body
});
답변1
역방향 DNS를 구성합니다. IP를 MX 서버 이름에 연결하는 PTR 항목을 추가하세요.
main.cf의 myhostname이 MX 서버 이름으로 설정되어 있는지 확인하십시오. 이것이 아마도 HELO 불일치의 원인일 수 있습니다.
SPF를 "v=spf1 a mx include:_spf.mail.hostinger.com ~all"로 설정하여 MX를 자동으로 발신자로 수락할 수 있지만 IP에서는 문제가 없습니다.
전달 가능성을 높이려면 Google에 도메인을 등록하세요.https://support.google.com/a/answer/9649569?hl=ko
반드시 DKIM을 사용하세요.
오픈킴
오픈킴을 설치하세요.
구성
/etc/opendkim.conf 편집:
sv
수신 이메일에 서명하고 확인하는 모드(확인 모드가 필요하지 않을 수도 있음)- 신고주소[이메일 보호됨]
- KeyTable, SigningTable : 키를 DNS 항목에 연결하는 파일
- InternalHosts : 신뢰할 수 있는 호스트 목록이 포함된 파일
키 만들기
mkdir /etc/opendkim/keys/example.com/
cd /etc/opendkim/keys/example.com/
opendkim-genkey -s mail -d example.com
chown opendkim:opendkim mail.*
매개변수 -s
는 선택자라고 하며 -d
도메인입니다.
편집하다/etc/opendkim/SigningTable도메인/선택기 쌍을 추가합니다.
*@example.com mail._domainkey.example.com.
편집하다/etc/opendkim/KeyTable선택기/키 쌍을 추가합니다.
mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
편집하다/etc/opendkim/TrustedHosts삽입하고
*.example.com
[your local network]
DNS
DNS에 공개 키를 추가해야 합니다. 당신은 열쇠를 찾을 수 있습니다/etc/opendkim/keys/xxx.yy/mail.txt
TXT 필드를 만듭니다.
mail._domainkey.example.com 10800 TXT "v=DKIM1; k=rsa; p=very_long_key"
접미사
opendkim이 키에 서명하도록 하려면 postfix가 opendkim을 인식하도록 해야 합니다.
해당 구성에서 opendkim에 대한 연결 방법을 가져옵니다. 과 같아야 하며 inet:8891@localhost
, 이를 필터로 추가해야 합니다.main.cf:
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
마무리
opendkim을 다시 시작한 다음(결국 활성화) postfix를 사용합니다. 다음을 사용하여 DNS의 키를 확인하세요.opendkim-testkey -d example.com -s mail -vvv
mail-tester.com에서 확인하세요. /var/log/maillog에서 보낸 각 이메일에 한 줄을 추가했는지 확인하세요.DKIM-Signature field added