Mit Postfix gesendete E-Mails werden als Spam behandelt und manchmal überhaupt nicht zugestellt

Mit Postfix gesendete E-Mails werden als Spam behandelt und manchmal überhaupt nicht zugestellt

Ich versuche, das Senden von E-Mails mit SMTP auf meinem VPS mit Ubuntu 18.04 einzurichten. Ich verwende Postfix, Nodemailer.

Wenn ich von einem[email geschützt], an ein Gmail-Konto, bleibt es im Gmail-Spam-Ordner hängen. Ich habe eine Punktzahl von 6,8 aufwww.mail-tester.com, mit diesen Abzügen:

-1.274 RDNS_NONE Von einem Host ohne rDNS an das interne Netzwerk übermittelt. Dies kann darauf hinweisen, dass Sie für Ihren Hostnamen kein rDNS konfiguriert haben oder dass das rDNS nicht mit Ihrer sendenden IP übereinstimmt.

-0.896 SPF_HELO_SOFTFAIL SPF: HELO stimmt nicht mit dem SPF-Eintrag überein (Softfail) Softfail

Ihre Nachricht ist nicht mit DKIM signiert

Ich denke, mein TXT-Eintrag ist korrekt:

"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

Nodemailer-Methode:

  "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
  });

Antwort1

  1. Konfigurieren Sie Ihren Reverse-DNS. Fügen Sie einen PTR-Eintrag hinzu, der Ihre IP mit Ihrem MX-Servernamen verknüpft

  2. Stellen Sie sicher, dass myhostname in main.cf auf Ihren MX-Servernamen eingestellt ist. Dies ist wahrscheinlich die Ursache für Ihre HELO-Nichtübereinstimmung.

  3. Sie können Ihren SPF auf „v=spf1 a mx include:_spf.mail.hostinger.com ~all“ einstellen, um Ihren MX automatisch als Absender zu akzeptieren, aber mit der IP sollte es auch kein Problem sein.

  4. Registrieren Sie Ihre Domain bei Google, um die Zustellbarkeit zu verbessern:https://support.google.com/a/answer/9649569?hl=de

  5. Verwenden Sie unbedingt DKIM:

opendkim

Installieren Sie opendkim.

Konfigurieren

Bearbeiten Sie /etc/opendkim.conf:

  • svModus zum Signieren und Verifizieren eingehender E-Mails (den Verifizierungsmodus benötigen Sie möglicherweise nicht)
  • Berichtsadresse[email geschützt]
  • KeyTable, SigningTable: Dateien, die die Schlüssel mit DNS-Einträgen verknüpfen
  • InternalHosts: eine Datei mit einer Liste vertrauenswürdiger Hosts

Erstellen der Schlüssel

mkdir /etc/opendkim/keys/example.com/
cd /etc/opendkim/keys/example.com/
opendkim-genkey -s mail -d example.com
chown opendkim:opendkim mail.*

Der Parameter -sheißt Selektor und -dist die Domäne.

Bearbeiten/etc/opendkim/SigningTableund fügen Sie ein Paar aus Domänen/Selektoren hinzu:

*@example.com mail._domainkey.example.com.

Bearbeiten/etc/opendkim/Schlüsseltabelleund fügen Sie ein Selektor/Schlüssel-Paar hinzu:

mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

Bearbeiten/etc/opendkim/TrustedHostsund einfügen

*.example.com
[your local network]

DNS

Sie müssen Ihren öffentlichen Schlüssel in Ihr DNS einfügen. Sie finden den Schlüssel in/etc/opendkim/keys/xxx.yy/mail.txt

Erstellen Sie ein TXT-Feld:

mail._domainkey.example.com 10800 TXT "v=DKIM1; k=rsa; p=very_long_key"

Postfix

Sie müssen Postfix auf Opendkim aufmerksam machen, damit es die Schlüssel signiert.

Holen Sie sich die Verbindungsmethode für OpenDKIM in der Konfiguration. Sie sollte etwa so aussehen inet:8891@localhostund als Filter inmain.cf:

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Abschließen

Starten Sie opendkim neu (und aktivieren Sie es ggf.) und dann postfix. Überprüfen Sie den Schlüssel in Ihrem DNS mitopendkim-testkey -d example.com -s mail -vvv

Überprüfen Sie mit mail-tester.com. Überprüfen Sie in /var/log/maillog, ob jeder gesendeten E-Mail eine Zeile hinzugefügt wirdDKIM-Signature field added

verwandte Informationen