접미사를 붙여 보낸 이메일은 스팸으로 처리되고 때로는 전혀 전달되지 않는 경우도 있습니다.

접미사를 붙여 보낸 이메일은 스팸으로 처리되고 때로는 전혀 전달되지 않는 경우도 있습니다.

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

  1. 역방향 DNS를 구성합니다. IP를 MX 서버 이름에 연결하는 PTR 항목을 추가하세요.

  2. main.cf의 myhostname이 MX 서버 이름으로 설정되어 있는지 확인하십시오. 이것이 아마도 HELO 불일치의 원인일 수 있습니다.

  3. SPF를 "v=spf1 a mx include:_spf.mail.hostinger.com ~all"로 설정하여 MX를 자동으로 발신자로 수락할 수 있지만 IP에서는 문제가 없습니다.

  4. 전달 가능성을 높이려면 Google에 도메인을 등록하세요.https://support.google.com/a/answer/9649569?hl=ko

  5. 반드시 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

관련 정보