Vraag Hoe e-mails verzenden en voorkomen dat ze als spam worden geclassificeerd?


Dit is een canonieke vraag over hoe om te gaan met e-mail die is verzonden vanaf uw server en die verkeerd is geclassificeerd als spam. Voor aanvullende informatie kunt u deze gelijkaardige vragen nuttig vinden:

Soms wil ik nieuwsbrieven naar mijn klanten sturen. Het probleem is dat sommige e-mails worden gepakt als spam-berichten. Meestal door Outlook op de client (zelfs in mijn eigen Outlook 2007).

Nu wil ik weten wat er moet gebeuren om "goede" e-mails te maken. Ik weet over reverse lookup etc., maar (bijvoorbeeld), hoe zit het met een afmeldlink met een unieke ID? Verhoogt dit een spamscore?


72
2017-07-31 05:53


oorsprong


EEN stap-voor-stap checklist evenals richtlijnen voor het oplossen van problemen zijn te vinden in een goed antwoord naar een vergelijkbare vraag op superuser.com. - MattBianco


antwoorden:


Zorg ervoor dat uw e-mails niet op normale spam-e-mails lijken: voeg niet alleen een grote afbeelding in; controleer of de tekenset correct is ingesteld; geen "Alleen IP-adres" -koppelingen invoegen. Schrijf uw communicatie op zoals u een normale e-mail zou schrijven. Maak het heel gemakkelijk om je af te melden of om je af te melden. Anders zullen uw gebruikers zich afmelden door op de knop "spam" te drukken, en dat heeft invloed op uw reputatie.

Op het technische vlak: als u uw SMTP-server kunt kiezen, zorg er dan voor dat het een "schone" SMTP-server is. IP-adressen van spamming SMTP-servers staan ​​vaak op de zwarte lijst van andere providers. Als u uw SMTP-servers niet van tevoren kent, is het een goede gewoonte om configuratie-opties in uw toepassing te bieden voor het regelen van batchgroottes en vertraging tussen batches. Sommige mailservers accepteren geen grote verzendbatches of doorlopende activiteiten.

Gebruik e-mailverificatiemethoden, zoals SPF, en Domain Keys om te bewijzen dat uw e-mails en uw domeinnaam bij elkaar horen. Het leuke neveneffect is dat je helpt voorkomen dat je e-maildomein vervalst wordt. Ook controleren jouw omgekeerde DNS om ervoor te zorgen dat het IP-adres van uw mailserver wijst naar de domeinnaam die u gebruikt voor het verzenden van e-mail.

Zorg ervoor dat het antwoordadres van uw e-mails een geldig, bestaand adres is. Gebruik de volledige, echte naam van de geadresseerde in het veld Aan en niet alleen het e-mailadres (bijv. "John Doe" <john.doe@example.com> ) en controleer uw misbruikaccounts, zoals abuse@example.com en postmaster@example.com.


76
2017-07-31 07:15



En gebruik multipart / alternatieve versies van uw html-e-mail die alleen tekst bevat. Het betekent dat de spamscanner nuttiger dingen zal doen om het te classificeren. - Matt


Ontvangers automatisch afmelden van uw bericht waarvan de e-mailadressen worden teruggestuurd en stel feedbacklussen voor klachten vast bij grote e-mailproviders en ontvangers die uw bericht als spam / ongewenste e-mail melden, worden automatisch uitgeschreven. Dit zal je reputatie en leverbaarheid aanzienlijk verbeteren.


19
2017-07-31 13:23



Dit is erg interessant. Ik wist niets van deze feedbacklussen. Bieden alle providers zo'n programma aan? - Uwe
Niet alle providers, nee. Maar de meeste van de grote, waaronder Yahoo en AOL en anderen. Alle klachtenfeedbacklussen waarvan ik weet dat vereisen dat berichten worden verzonden vanuit een domein dat is geverifieerd door DKIM of DomainKeys. Ik geloof dat sommigen ook SPF vereisen, maar minder vaak.


Deze vraag vermeldt dat de basisprincipes aanwezig zijn, maar terwijl we anderen hierop wijzen als een Canonische vraag, wil ik er zeker van zijn dat we onze bases behandelen.

Deze minima zijn in essentie tegenwoordig vereist:

  1. Zorg ervoor dat u DNS correct hebt geconfigureerd en doorstuur. Een mailserver moet zichzelf identificeren in een HELO / EHLO-uitwisseling, die naam moet opzoeken naar het IP-adres dat de server gebruikt. Op dezelfde manier moet de reverse lookup van dat IP de naam teruggeven.

  2. Zorg ervoor dat uw server de hostnaam daadwerkelijk in die handshake verzendt. Uw server zou geen IP-adres moeten verzenden.

  3. Zorg ervoor dat uw IP-adres niet op DNSRBL's staat (zwarte lijsten). Als dat zo is, zorg dan dat dat wordt geregeld.

  4. Controleer de reputatie van uw IP met de meer populaire reputatieservices (SenderScore is nu een grote, maar dat kan in de loop van de tijd niet doorgaan). Deze services hebben over het algemeen richtlijnen voor het verbeteren van uw reputatie, maar zijn geen regelrechte "go / no-go" zoals RBL's.

  5. Vervals geen headers, lieg niet in headers en zorg ervoor dat je de minimale headers in berichten opneemt (Date en From zijn verplicht, er moet een zijn Subject, Sender, Reply-To, en To/Cc/Bcc [zoals van toepassing]). Dit is een van mijn grootste pet-peves met geldige nieuwsbrieven die ik wil ontvangen, omdat ze een Outlook Express-header vervalsen, de datum weglaten of iets dergelijks.

Optioneel zou je moeten overwegen om SPF, DKIM en DMARC in te stellen. Deze helpen met de deliverability, maar zijn niet vereist (niet door de overgrote meerderheid van e-mailservers).


14
2018-03-25 21:03





Helaas zijn er veel verschillende filtertechnieken en sommige grote mailproviders publiceren niet wat ze gebruiken en / of welke wegingen worden gegeven aan verschillende tests / filters, dus weten hoe ze erdoorheen moeten komen is moeilijk. In feite heeft spam gebruikers en ISP's in een situatie gedreven waarin ze het soms moeilijk maken om dergelijke legitieme berichten (vooral bulkmeldingen zoals je nieuwsbrief) door te komen. Ik beschouw e-mail niet meer als de halfweg betrouwbare methode die het ooit was.

Om iets minder negatief en behulpzaam te zijn ... Omdat je specifieke problemen hebt met een bepaalde cliënt, kunnen er dingen zijn die het programma je kan vertellen. Ik weet niet specifiek over Outlook omdat ik het nergens zelf gebruik, maar veel mailfilters injecteren headers in berichten om op te sommen welke filters zijn gebruikt, wat het resultaat was en wat de weging die aan dat filter was gegeven was. Dus als je naar de volledige bron kijkt van de berichten die ze hebben gekregen, worden ze verplaatst naar junkmappen die mogelijk nuttige aanwijzingen bevatten. SpamAssassin-gebaseerde filters injecteren bijvoorbeeld koppen van de volgende vorm:

X-Spam-Flag: YES
X-Spam-Score: 13.371
X-Spam-Level: *************
X-Spam-Status: Yes, score=13.371 tagged_above=-10 required=5.4
    tests=[BAYES_99=3.5, FB_GET_MEDS=0.803, RCVD_IN_SORBS_WEB=0.619,
    RCVD_IN_XBL=3.033, RDNS_NONE=0.1, URIBL_AB_SURBL=1.86,
    URIBL_BLACK=1.955, URIBL_JP_SURBL=1.501]

(dat voorbeeld is geplukt van een echt spambericht in mijn rommel)

Dit is echter niet definitief, aangezien Bayesiaanse filtering en andere methoden waarbij gebruikerstraining wordt gebruikt, vaak voorkomen - dus wat uw filters passeren en mislukken, kan aanzienlijk verschillen van die van andere mensen, hoewel de client identiek en out-of-the-box is geconfigureerd. Misschien moet u een andere uitlaatklep voor uw nieuws overwegen (veel mensen proberen hiervoor protocollen voor sociale netwerken te gebruiken, met wisselend succes).


10
2017-07-31 07:24





Zoals anderen al zeiden, wilt u voorkomen dat u "kijkt" als een spambericht wanneer u de e-mail verzendt, maar u kunt niet per se vertellen wat u wel of niet op spam zal laten lijken, omdat de technieken variëren.

Een ding dat u misschien wilt overwegen, is het verzenden van een e-mail in platte tekst naar uw klanten voor elke nieuwsbrief die een korte beschrijving / begroeting bevat, gevolgd door een "klik hier om onze laatste nieuwsbrief te bekijken!" bericht; op die manier kunt u uw bericht hosten op een webserver, verkleint u de grootte van e-mails (en laadt u uw mailserver) en als een bonus kunt u de logboeken op uw webserver bekijken om feedback te krijgen over hoeveel klanten eigenlijk uw berichten lezen versus ze te verwijderen.


8
2017-07-31 12:44



Hmm. Ik heb nog nooit eerder een spammer die tactiek zien gebruiken ... - Ernie
Over het algemeen heeft rechte tekst met een of meer legitieme koppelingen (niet veel royaal verspreid) de neiging om erdoorheen te komen ... anders kan ik geen links naar mezelf of andere mensen e-mailen zonder dat ze worden gemarkeerd als spam. Het is hetzelfde als te zeggen dat je nog nooit spammers instant messaging hebt zien sturen met 'vieze woorden' om mensen te verleiden om te reageren. Legit-verkeer doet het ook. De sleutel moet niet "te spammen" zijn ... een gebruikersnaam zoals bevans is waarschijnlijk niet zo verdacht als "hottienakedchick69", zelfs als de inhoud hetzelfde is, weet je wat ik bedoel? - Bart Silverstrim


Mijn online bedrijf ondervond problemen met e-mails over de orderbevestiging die naar spam gingen of zelfs niet werden bezorgd (gemeden via e-mailservers). Dit waren eenvoudige "hier is een samenvatting van uw bestelling" e-mails met één link naar het domein van onze site. We hebben uiteindelijk een paar Google Apps-accounts voor mijn bedrijf gekocht. U kunt er een instellen om op te treden als uw SMTP-server. Het gebruik van Google als onze e-mailafzender heeft al deze problemen gestopt.

Voor zover e-mail nieuwsbrieven, gebruik zeker een dienst die opt-in / -out voor u afhandelt. Als u iemand anders dan een service gebruikt om bulkmail te verzenden, wordt u waarschijnlijk verbannen.


4
2018-06-05 19:34



Dat is een tijdelijke oplossing. Een juiste oplossing zou zijn om uw defecte systeem te corrigeren en ervoor te zorgen dat u op zijn minst een goed SPF-record in DNS hebt. - John Gardeniers
Als de internetprovider waarop uw e-mailserver staat, als zwarte spam wordt gemarkeerd, heeft u daar veel succes mee. We waren op dat moment op Rackspace. Het gebruik van Google als SMTP hielp omdat Google ervoor zorgde dat het niet op de zwarte lijst staat. - Chris K


Gedetailleerde oplossing om te voorkomen dat e-mails worden geïdentificeerd als spam en / of niet aankomen bij ontvangers

Voorbeeldsituatie: u hebt een server waarop een PHP-website wordt uitgevoerd example.com dat moet stuur emails. En je merkt dat je e-mails niet altijd worden afgeleverd. (Groot probleem als u een winkeleigenaar bent en de klanten de e-mails niet ontvangen na een aankoop!).

Als je de volgende stappen volgt, is het moeten 99,9% van de problemen oplossen; in mijn geval werkte het. (Ik dacht eerst dat het mogelijk was om er maar een paar te doen, en DKIM bijvoorbeeld over te slaan, maar uiteindelijk moesten ze allemaal alle problemen oplossen die ik had).

  1. Allereerst, wie stuurt e-mails?

    Wanneer je PHP-code e-mails verstuurt, is het vaak met de beroemde PHP-functie mail(...). Maar wat doet deze functie, onder de motorkap? Laten we een a uitvoeren test.php pagina bevat <?php echo ini_get('sendmail_path'); ?>. Je krijgt bijvoorbeeld: /usr/sbin/sendmail -t -i. Goed nieuws, nu weten we welk programma gaat echt hand in hand de e-mails!
    Nu een lastige info: de naam sendmail kan zijn verschillende programma's. Zelfs als je het ziet sendmail in de vorige stap heeft u dat misschien gedaan Verzend mail of postfix of eximof qmail, etc. geïnstalleerd. Laten we doen dpkg -S /usr/sbin/sendmail. Het antwoord is postfix: /usr/sbin/sendmail, ok dit betekent wij hebben postfix geïnstalleerd.

  2. Kijk in het logbestand /var/mail/www-data om te weten welke e-mails niet correct zijn verzonden en waarom. Dit kan handig zijn voor de volgende stappen.

  3. Zoals vermeld op Jeff Atwood's blog, het is tijd om naar omgekeerde PTR-records te kijken. (Meer informatie moet hier worden toegevoegd).

  4. Voeg de volgende regel toe in het postfix-configuratiebestand /etc/postfix/main.cf het dossier:

    inet_protocols=ipv4
    

    Start dan de herstart opnieuw met service restart postfix. Waarom? Omdat ik problemen als deze had toen de ontvanger gmail was:

    Ons systeem heeft vastgesteld dat dit bericht 550-5.7.1 niet voldoet aan de IPv6-verzendrichtlijnen met betrekking tot PTR-records en 550-5.7.1-authenticatie. Bekijk 550-5.7.1 https://support.google.com/mail/?p=ipv6_authentication_error voor meer informatie over 550 5.7.1.

    De gemakkelijkste oplossing was om over te schakelen postfix alleen voor ipv4, dus deze stap 4 (wat misschien niet nodig is voor u?).

  5. SPF DNS-records. Om te bewijzen dat je e-mails mag sturen van @example.com, kunt u een SPF-record toevoegen in de DNS-records van het domein example.com. Ik vond ergens dat The DNS record type 99 (SPF) has been deprecated, dus gebruiken we een TXT-record. Laten we dit toevoegen als een TXT DNS-record (zie ook noot 1):

    v=spf1 a mx include:_spf.google.com include:sendgrid.net ~all
    

    Waarom deze omvat? Omdat mijn server niet de enige is die e-mails van @ example.com verstuurt! Ik heb Gmail geconfigureerd voor Stuur e-mail als contact@example.com (zie screenshot hier), met behulp van de vertrouwde SMTP-provider SendGrid. Als ik deze niet voeg include:, Gmail zou geen e-mail mogen sturen van @example.com.

  6. DKIM digitale handtekening. Zoals genoemd hier, DKIM heeft als doel ervoor te zorgen dat de e-mailinhoud niet is gemanipuleerd tijdens de verzending. Hier is het installatieproces in Ubuntu (handige gids hier te):

    • apt-get install opendkim opendkim-tools

    • Maak de sleutels (u kunt ook sleutels en de relevante DNS TXT-record genereren met http://dkimcore.org/tools/):

      mkdir /etc/opendkim
      cd /etc/opendkim
      opendkim-genkey -t -s mail -d example.com
      
    • Laten we dit invoegen /etc/opendkim.conf:

      Syslog                 yes
      Domain                 *
      KeyFile                /etc/opendkim/mail.private
      Selector               mail
      AutoRestart            yes
      Background             yes
      Canonicalization       relaxed/relaxed
      DNSTimeout             5
      Mode                   sv
      SubDomains             no
      

      dit in /etc/default/opendkim:

      SOCKET="inet:8891@localhost" # Ubuntu default - listen on loopback on port 8891
      

      en voeg dit uiteindelijk toe aan het einde van het postfix-configuratiebestand /etc/postfix/main.cf:

      # DKIM
      milter_default_action = accept
      milter_protocol = 2
      smtpd_milters = inet:localhost:8891
      non_smtpd_milters = inet:localhost:8891
      
    • Laten we nu de openbare sleutel toevoegen (gevonden in /etc/opendkim/mail.txt) naar de DNS-records van uw domein:

      mail._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=OqYHd...waPaQAX"
      

      Zo ziet het eruit met mijn registrar Namelynx:

    • Laatste stap voor DKIM: herstart de e-mailservices met service restart opendkim ; service restart postfix.

  7. Test of alles werkt. De eenvoudigste methode is om een ​​e-mail te sturen via PHP naar auth-results@verifier.port25.com (deze zeer nuttige tool wordt beschikbaar gesteld door Port25 Solutions):

    $emailfrom = "Example <contact@example.com>";
    $headers  = "MIME-Version: 1.0 \n";
    $headers .= "Content-Transfer-Encoding: 8bit \n";
    $headers .= "Content-type: text/plain; charset=utf-8\n";
    $headers .= "Reply-To: " . $emailfrom . "\n";
    $headers .= "From: " . $emailfrom . "\n";
    $headers .= "Bcc: example@gmail.com\n";
    mail("check-auth@verifier.port25.com", "Hello", "Hello!", $headers);
    

    Zie dan het antwoord van deze tool, het zou er als volgt uit moeten zien:

    ==========================================================
    Summary of Results
    ==========================================================
    SPF check:          pass
    DKIM check:         pass
    SpamAssassin check: ham
    

    De dienst mail-tester.com is ook nuttig.

  8. (Optioneel) Probeer postmaster.google.com. Ik heb het gebruikt, maar ik weet niet meer of het hielp of niet.

  9. Als het nog steeds niet werkt, een oplossing zou kunnen zijn om e-mail uit te besteden met een professionele oplossing, om dagen en nachten van (niet succesvol) debuggen te voorkomen. Hier is hier een goed artikel over. Hier is een citaat: "Het verzenden van e-mails van uw app kan s ***. Halverwege de tijd worden berichten die van uw eigen server worden verzonden gewoon in de map met ongewenste e-mail van de ontvanger gedumpt." dat ik helaas waar ontdekte, na weken van tweaken.


Extra notities:

(1)

-all : Fail: All mail servers not listed in the SPF record are explicitly not authorized to send mail using the sender’s domain.
~all : Soft Fail: All mail servers not listed in the SPF record are not authorized to send mail using the sender’s domain, but the owner of the domain is unwilling to make a strong assertion to that effect.
?all : Neutral: The domain controller cannot or does not want to assert whether or not all mail servers not listed in the SPF record are authorized to send mail using the sender’s domain.
+all : Pass: All mail servers are authorized to send mail on behalf of the sender’s domain.

3
2017-09-01 10:21