Comment faire des e-mails et ne pas gĂącher: conseils pratiques


Le développeur, qui a rencontré pour la premiÚre fois la génération d'e-mails, n'a pratiquement aucune chance d'écrire une application qui le fera correctement. Environ 40% des e-mails générés par les applications d'entreprise ont une sorte de violation des normes et, par conséquent, des problÚmes de livraison et d'affichage. Il y a des raisons à cela: le courrier électronique est techniquement beaucoup plus compliqué que le Web, le courrier est réglementé par plusieurs centaines de normes et un nombre incalculable de pratiques généralement acceptées (et pas ainsi), et les clients de messagerie sont divers et imprévisibles. Les tests peuvent améliorer considérablement la situation, mais il n'y a pratiquement aucun matériel consacré au test du courrier.

Mail.Ru mail interagit rĂ©guliĂšrement avec ses utilisateurs via des e-mails. Dans notre projet, tous les composants qui sont responsables de la gĂ©nĂ©ration des e-mails, et mĂȘme des envois uniques, subissent des tests obligatoires. Dans cet article, nous partagerons notre expĂ©rience (et plein de bosses).



Que sont les e-mails


L'application peut gĂ©nĂ©rer diffĂ©rents types de lettres. Ils peuvent ĂȘtre classĂ©s en plusieurs catĂ©gories. Par la mĂ©thode de sĂ©lection des destinataires: dĂ©clencheur - sĂ©lectif - groupe. Sur rendez-vous: transactionnel - marketing - service. DiffĂ©rents types de lettres peuvent avoir des exigences diffĂ©rentes et appliquer diffĂ©rents scripts de test.

Les e-mails de dĂ©clenchement sont gĂ©nĂ©rĂ©s en rĂ©ponse Ă  tout Ă©vĂ©nement, par exemple, les actions de l'utilisateur ou les modifications de l'Ă©tat des objets systĂšme. Ils sont gĂ©nĂ©rĂ©s par l'application, et donc les plus intĂ©ressants en termes de tests. Les e-mails de dĂ©clenchement peuvent ĂȘtre Ă  la fois transactionnels et marketing.

Des lettres personnalisées sont envoyées à une sélection dynamique d'utilisateurs correspondant à tous les critÚres.

Les messages de groupe sont envoyés à un groupe connu de destinataires, par exemple, à tous les utilisateurs ou partenaires. Les lettres sélectives et de groupe sont le plus souvent du marketing, l'envoi de ces lettres est initié manuellement ou selon un calendrier.

Des lettres transactionnelles sont gĂ©nĂ©rĂ©es lorsqu'un utilisateur effectue une action. Ces lettres comprennent, par exemple, des factures, des tickets ou des notifications d'Ă©tat de livraison, des lettres avec un code de rĂ©cupĂ©ration d'accĂšs, etc. Les e-mails transactionnels sont toujours dĂ©clenchĂ©s. Une compatibilitĂ© maximale est importante pour eux, ce qui signifie qu'ils doivent ĂȘtre aussi simples que possible et qu'ils doivent ĂȘtre testĂ©s sur un grand nombre de clients.

Les lettres marketing encouragent l'utilisateur Ă  entreprendre n'importe quelle action, par exemple, il peut s'agir d'une offre de remises individuelles basĂ©e sur des achats antĂ©rieurs. Dans ces lettres, des donnĂ©es transactionnelles peuvent ĂȘtre utilisĂ©es, elles peuvent ĂȘtre Ă  la fois dĂ©clenchĂ©es et massives - pĂ©riodiques ou ponctuelles. Pour ces lettres, l'efficacitĂ© est plus importante, elle est gĂ©nĂ©ralement dĂ©terminĂ©e par les rĂ©sultats d'un test fractionnĂ©. Certains aspects de la compatibilitĂ© peuvent ĂȘtre sacrifiĂ©s pour l'efficacitĂ©.

Les lettres de marketing de groupe, par exemple, les messages sur les offres saisonniÚres, les promotions et les ventes, sont souvent envoyées «manuellement» et ne font pas partie de votre application, mais vous pouvez (et devez) leur appliquer des principes de test généraux.

De plus, il peut y avoir des lettres de service gĂ©nĂ©rĂ©es par les employĂ©s pour les systĂšmes CRM, journalisation, audit ou DWH automatisĂ©s ou automatisĂ©s. Ces lettres sont dĂ©clenchĂ©es, ce qui signifie qu'elles font Ă©galement partie de l'application et doivent ĂȘtre testĂ©es.

Qui est impliqué dans le processus de test et de contrÎle


  1. Ingénieur AQ - participe à toutes les étapes du processus.
  2. IngĂ©nieur rĂ©seau - Responsable de la configuration du rĂ©seau et de l'infrastructure de messagerie. Un ingĂ©nieur rĂ©seau doit ĂȘtre impliquĂ© dans la planification des tests d'infrastructure.
  3. Un spĂ©cialiste de la dĂ©livrabilitĂ© est une personne qui surveille la livraison des lettres, qui participe Ă©galement Ă  la surveillance des paramĂštres techniques et administratifs de tous les messages envoyĂ©s et surveille l'avancement du processus d'envoi. Il est responsable de s'assurer que les lettres envoyĂ©es atteignent le pourcentage maximum possible d'utilisateurs et ne tombent pas dans le spam, et pour cela le spĂ©cialiste doit avoir certaines connaissances et contacts. Si des problĂšmes surviennent avec la remise des lettres, c'est lui qui doit comprendre la cause probable et l'Ă©liminer: soit en Ă©liminant les obstacles techniques; ou changer quelque chose dans le contenu des lettres; ou rĂ©soudre le problĂšme avec le service d'assistance du fournisseur de messagerie, auquel les lettres ne parviennent pas. Un tel spĂ©cialiste (le cas Ă©chĂ©ant) devrait Ă©galement ĂȘtre impliquĂ© dans la prĂ©paration d'une liste de contrĂŽle et le test de l'infrastructure qui gĂ©nĂšre les applications et les lettres. Cependant, le processus de test lui-mĂȘme doit ĂȘtre sous le contrĂŽle du service QA.
  4. Marketing par e-mail - détermine l'efficacité des campagnes marketing. Sous son contrÎle, le fractionnement des tests pour le public nécessaire aux mailings marketing a lieu. Le marketing par e-mail contrÎle également la segmentation de la base d'utilisateurs, la composition et la fréquence des e-mails envoyés et la «présentation» visuelle de l'e-mail à l'utilisateur.

Tous ces rĂŽles ne sont pas nĂ©cessairement assumĂ©s par un employĂ© distinct: le rĂŽle d'un responsable marketing peut ĂȘtre jouĂ© par l'un des chefs de produit, et le rĂŽle d'un spĂ©cialiste de la dĂ©livrabilitĂ© peut ĂȘtre jouĂ©, par exemple, par un employĂ© de support ou un ingĂ©nieur rĂ©seau. Et dans les startups avec un degrĂ© de probabilitĂ© Ă©levĂ©, tout cela devra ĂȘtre fait par une seule personne, et elles peuvent se rĂ©vĂ©ler ĂȘtre un spĂ©cialiste de la qualitĂ©.

Courrier et transport postal


La structure du courrier est similaire à un énorme iceberg, et elle a deux niveaux. Il existe plus d'une centaine de normes différentes régissant le courrier, mais presque toutes appartiennent à l'un de ces deux niveaux:

La partie sous-marine de l'iceberg est un service réseau dont le protocole de base est le protocole d'application SMTP, défini par la RFC 5321. Il est responsable de la livraison des lettres. Pour remettre la lettre, une enveloppe dite SMTP est formée, qui comprend les adresses de l'expéditeur et du récepteur du niveau SMTP. D'autres services réseau tels que DNS sont également responsables de la remise de la lettre. Le composant principal de l'infrastructure réseau est l'agent de transfert de courrier, ou l'abréviation MTA est utilisée plus souvent. MTA est responsable de la gestion de la file d'attente de remise des messages et du processus de remise aux serveurs destinataires. Les exemples de MTA sont Postfix, Sendmail, Exim, Microsoft SMTP service.

Cette partie sous-marine de l'iceberg, qui comprend le MTA, les paramÚtres DNS et d'autres paramÚtres de réseau, nous l'appellerons infrastructure de messagerie ou infrastructure de livraison de messages.

La surface de l'iceberg est la lettre elle-mĂȘme. La structure de base de la lettre est dĂ©finie dans la RFC 5322. La lettre se compose d'en-tĂȘtes de service et d'une ou plusieurs parties avec des donnĂ©es. Les donnĂ©es peuvent contenir du texte en texte brut et / ou HTML, des images en ligne ou des piĂšces jointes de presque n'importe quel type.

L'interface de l'infrastructure de messagerie et les limites de l'application testée


L'infrastructure de messagerie, en rĂšgle gĂ©nĂ©rale, possĂšde une ou plusieurs interfaces avec lesquelles une lettre est envoyĂ©e (elle entre dans la file d'attente de remise du MTA). Par exemple, le service de soumission SMTP, la fonction mail() en PHP, le transfert de donnĂ©es vers une application de messagerie externe ou sendmail, l'API de services internes ou externes (par exemple, GetResponse, SendPulse ou Amazon SES). Nous considĂ©rerons ces interfaces comme faisant partie de l'infrastructure. TrĂšs souvent, il y a une situation oĂč l'application A prĂ©pare des donnĂ©es pour une lettre et une liste de destinataires, puis les transfĂšre Ă  l'application B via son API (pour le marketing de masse, cela peut ĂȘtre fait manuellement via l'interface utilisateur - UI), et dĂ©jĂ  l'application B gĂ©nĂšre un message Ă©lectronique dans Format RFC 5322 et le met en file d'attente pour la livraison MTA. Du point de vue de l'application A (et lors de son test), l'application B fera partie de l'infrastructure de messagerie. L'API ou l'interface utilisateur de l'application B sera l'interface de l'infrastructure de messagerie pour l'application A. Bien que du point de vue de l'application B, la situation sera diffĂ©rente et l'infrastructure de messagerie pour celle-ci sera constituĂ©e d'applications ou de protocoles rĂ©seau de niveau infĂ©rieur.

Définition des paramÚtres testés


Lors du test de chaque application, il est important de mettre en Ă©vidence toutes les infrastructures de messagerie utilisĂ©es par celle-ci (il peut y en avoir plusieurs), et pour chaque infrastructure, de sĂ©lectionner les interfaces utilisĂ©es (il peut Ă©galement y en avoir plusieurs pour chaque infrastructure). Pour chaque interface, la composition et le format des donnĂ©es qui y sont transfĂ©rĂ©es sont dĂ©terminĂ©s aussi prĂ©cisĂ©ment que possible, par exemple: texte de message en TEXT / HTML, texte de message en TEXT / PLAIN, sujet du message, nom du destinataire, adresse du destinataire, nom de l'expĂ©diteur, adresse de l'expĂ©diteur de la lettre (RFC5321.From ), l'adresse de l'expĂ©diteur du conducteur SMTP (RFC5322.mailfrom). Ensuite, un ensemble d'exigences est dĂ©veloppĂ© pour chaque paramĂštre (reprĂ©sentations, codages, valeurs limites, etc.), des mĂ©thodes de contrĂŽle pour chacun des paramĂštres sont dĂ©terminĂ©es (de quelle maniĂšre le rĂ©sultat rĂ©el peut-il ĂȘtre comparĂ© au rĂ©sultat attendu).

Structure typique d'une application génératrice


En rĂšgle gĂ©nĂ©rale, le produit que nous testons est responsable de la gĂ©nĂ©ration de la lettre et des donnĂ©es qu'elle contient. Il s'agit gĂ©nĂ©ralement d'une application serveur (mais parfois cliente). Il dĂ©finit la structure de la lettre, une partie des en-tĂȘtes de service, les formats d'encapsulation des donnĂ©es, la prĂ©sentation des chaĂźnes et l'encodage du texte. Un exemple simple d'une telle application est un script qui forme une lettre et appelle la fonction mail() .

Les principaux éléments de l'application à maßtriser:

  • code responsable de la gĂ©nĂ©ration des en-tĂȘtes et / ou de la structure des lettres si la structure des lettres est gĂ©nĂ©rĂ©e dynamiquement et / ou un modĂšle de lettre statique dĂ©crivant sa structure;
  • disposition de la partie HTML de la lettre (idĂ©alement, il s'agit d'une entitĂ© distincte ou d'une partie du modĂšle / de la disposition de la lettre, mais qui peut ĂȘtre cousue dans le code d'application);
  • Substitution des donnĂ©es d'application dans une lettre (ou dans un modĂšle de lettre);
  • intĂ©gration de l'application avec l'infrastructure de distribution de lettres, la justesse des paramĂštres transfĂ©rĂ©s Ă  l'interface de l'infrastructure.

Quoi et quand tester


Que cela nous plaise ou non, tout l'iceberg doit ĂȘtre testĂ©. Il existe plusieurs composants principaux qui nĂ©cessitent des tests:

1. Infrastructure de livraison


Les tests devraient mettre l'accent sur: la délivrabilité des lettres; l'exactitude des enregistrements DNS, y compris les enregistrements PTR / FCrDNS, MX et A; ParamÚtres du protocole SMTP (HELO, utilisant TLS); autorisation de lettre (SPF / DKIM / DMARC); Adresses d'enveloppe SMTP (si elles ne sont pas gérées par l'application); traitement correct des paramÚtres d'entrée de l'interface de l'infrastructure; suivi, comptabilité et traitement des lettres non remises.

Il est nĂ©cessaire de tester l'infrastructure lors de la mise en Ɠuvre initiale et chaque fois que des modifications sont apportĂ©es Ă  l'infrastructure elle-mĂȘme (la configuration du MTA, du DNS ou des modifications du rĂ©seau) ou de l'interface d'envoi de lettres; Utilisation d'un nouveau domaine, rĂ©seau ou API Modifiez considĂ©rablement les caractĂ©ristiques des e-mails envoyĂ©s, comme leur langue, leur taille ou leur quantitĂ©. Selon l'expĂ©rience, l'infrastructure a tendance Ă  changer sans dĂ©clarer la guerre, donc des tests de base devraient ĂȘtre effectuĂ©s pĂ©riodiquement, mĂȘme s'il n'y a aucune information sur des changements.

Un ingĂ©nieur rĂ©seau et un spĂ©cialiste de la dĂ©livrabilitĂ© peuvent et doivent ĂȘtre impliquĂ©s dans la prĂ©paration du plan et des listes de contrĂŽle des tests d'infrastructure.

2. L'application génératrice


Vous devez contrĂŽler les adresses de l'enveloppe SMTP (si elles sont contrĂŽlĂ©es par l'application, c'est-Ă -dire transfĂ©rĂ©es Ă  l'interface - enveloppe-de, enveloppe-Ă ), les valeurs des en-tĂȘtes de message de service (Date, Message-ID, Liste-DĂ©sabonnement, Soumission automatique, etc.) p.), autorisation de lettres (DKIM / DMARC), encodages MIME (base64, quoted-printable), l'exactitude gĂ©nĂ©rale du format de lettre, par exemple, l'absence de caractĂšres non ASCII dans les en-tĂȘtes, la composition des donnĂ©es substituĂ©es, le dĂ©clenchement correct des dĂ©clencheurs, les mĂ©canismes de dĂ©sabonnement, les mĂ©canismes de suivi collecte de lettres et de statistiques (en-tĂȘtes de postmaster, par exemple, Feedback-ID ou X-Mailru-Msgtype, ainsi que le suivi des pixels) .

Vous devez tester l'application au cours de son développement, lors du changement de tous ses composants associés responsables de la génération et du stockage des données, avec des modifications importantes des modÚles de lettres, lors du changement de l'infrastructure utilisée ou de son interface, ainsi que dans le cadre de régressions générales.

3. ModÚles de lettres structurelles et de mise en page (peuvent faire partie d'une application génératrice ou sont développés séparément)


La structure du message est vĂ©rifiĂ©e (Content-Type, Content-Disposition, imbrication des parties multiparties de la lettre, encodage de texte, paramĂštres de chaĂźne), la valeur de la cible et les en-tĂȘtes affichĂ©s (De, À, RĂ©pondre Ă , Objet), le message est affichĂ© dans la liste des lettres et lors de la lecture dans diverses interfaces, microformats (par exemple, qu'un Ă©vĂ©nement de calendrier est reconnu comme un Ă©vĂ©nement de calendrier, ou un billet d'avion comme un billet d'avion), l'image de marque.

Les modĂšles d'e-mail doivent ĂȘtre testĂ©s chaque fois que vous effectuez au moins les moindres modifications, et Ă©galement sĂ©parĂ©ment, par exemple, dans une situation oĂč des lettres pĂ©nĂštrent dans l'application avant que la partie serveur ne soit prĂȘte.

Il est recommandé d'utiliser un spécialiste du marketing par courrier électronique et de la délivrabilité pour rédiger une liste de contrÎle pour tester un modÚle de lettre.

Exigences de base pour vérifier l'infrastructure


L'adresse IP sĂ©lectionnĂ©e pour le serveur de messagerie doit ĂȘtre aussi similaire que possible Ă  l'adresse IP du serveur de messagerie. Il est recommandĂ© de le vĂ©rifier Ă  l'aide de l'utilitaire whois. En particulier, l'adresse de l'expĂ©diteur ne doit pas appartenir Ă  un rĂ©seau pouvant ĂȘtre perçu comme dynamique; Le rĂ©seau sĂ©lectionnĂ© doit avoir des contacts valides auxquels vous pouvez envoyer des rĂ©clamations; le rĂ©seau doit ĂȘtre utilisĂ© (avoir le statut ASSIGNÉ dans RIPE). L'adresse IP doit avoir un enregistrement PTR correctement configurĂ©. Il peut ĂȘtre configurĂ© indĂ©pendamment via le panneau de contrĂŽle d'hĂ©bergement ou en utilisant le service d'assistance du fournisseur. L'enregistrement PTR doit pointer vers le vĂ©ritable nom d'hĂŽte et en mĂȘme temps ĂȘtre significatif, se rĂ©soudre Ă  la mĂȘme adresse IP (la soi-disant vĂ©rification FCrDNS), ne pas rappeler le nom de l'hĂŽte dynamique et ne pas inclure un grand groupe de chiffres ou de caractĂšres. Un bon exemple est mailserver.example.com.

Chaque domaine utilisĂ© dans les adresses d'enveloppe ou les en-tĂȘtes de message doit avoir un enregistrement MX valide pointant vers un enregistrement A de l'hĂŽte, qui, au minimum, peut traiter les messages concernant l'Ă©chec de la remise. Pour MX, il n'est pas permis de se rĂ©fĂ©rer directement Ă  une adresse IP.

ContrĂŽlez le passage de SPF, DKIM, DMARC. SPF permet au propriĂ©taire du domaine de spĂ©cifier dans l'enregistrement TXT une liste de serveurs autorisĂ©s Ă  envoyer des e-mails avec des adresses de retour dans ce domaine. Il est configurĂ© pour l'adresse utilisĂ©e dans l'enveloppe de (enveloppe SMTP) dans la section de gestion de la zone DNS du domaine. DKIM permet de vĂ©rifier la paternitĂ© d'un message ou l'appartenance de son expĂ©diteur Ă  un domaine spĂ©cifique Ă  l'aide de technologies de signature numĂ©rique, qui sont ajoutĂ©es au message lui-mĂȘme (dans son en-tĂȘte DKIM-Signature). En rĂšgle gĂ©nĂ©rale, une signature DKIM est configurĂ©e au niveau MTA (infrastructure). DMARC dĂ©finit la politique de vĂ©rification du courrier entrant dans un domaine spĂ©cifique et les actions sur les lettres qui ne passent pas l'authentification SPF ou DKIM. Lorsque vous essayez de violer cette politique, un rapport structurĂ© arrive avec des informations sur une telle tentative. DMARC, ainsi que SPF, est publiĂ© en tant qu'enregistrement TXT dans la zone de domaine.

VĂ©rifiez la livraison des lettres aux principaux services postaux - pour la Russie, Mail.Ru, Yandex, GMail, Microsoft (Hotmail / Outlook.com / Office365), Rambler, nic.ru. Dans les lettres, vous devez vĂ©rifier l'exactitude de HELO; disponibilitĂ© et passage des chĂšques PTR / FCrDNS, SPF, DKIM et DMARC; la validitĂ© des en-tĂȘtes et des donnĂ©es qu'ils contiennent, en particulier le synchronisme des heures dans les dates et l'exactitude des fuseaux horaires.



La formation de certains paramĂštres, par exemple l'autorisation, la dĂ©livrabilitĂ© et le spam, est influencĂ©e intĂ©gralement par tous les composants, mais il existe gĂ©nĂ©ralement des outils opĂ©rationnels distincts pour les contrĂŽler - rapports DMARC et FBL, API de service postmaster, outils de suivi des e-mails et statistiques de livraison. Les tests doivent prendre en compte le niveau de mise en Ɠuvre des outils de suivi opĂ©rationnel dans l'entreprise - par exemple, en l'absence de suivi opĂ©rationnel des rapports DMARC, vous devez tester rĂ©guliĂšrement l'autorisation de courrier, en l'absence de suivi opĂ©rationnel de la dĂ©livrabilitĂ© - vĂ©rifier rĂ©guliĂšrement comment et oĂč les lettres arrivent, mĂȘme s'il n'y a pas de dĂ©veloppement liĂ© Ă  l'envoi de lettres pas effectuĂ©.

Pour vĂ©rifier l'infrastructure, vous pouvez utiliser des services spĂ©cialisĂ©s, par exemple, mail-tester.com , mxtoolbox.com . Les exigences d'infrastructure dĂ©taillĂ©es peuvent ĂȘtre trouvĂ©es dans cet article .



Conditions d'autorisation


La vĂ©rification du passage de SPF, DKIM, DMARC est gĂ©nĂ©ralement possible en utilisant l'en-tĂȘte Authentication-Results sur le serveur du destinataire.

VĂ©rifiez la validitĂ© de l'enregistrement SPF pour la syntaxe, la limite pour les requĂȘtes DNS (par exemple, en utilisant mxtoolbox.com). Lors de la constitution d'un SPF, toutes les sources de mailing doivent ĂȘtre prises en compte (n'oubliez pas les systĂšmes CRM, toutes les infrastructures de livraison utilisĂ©es, y compris celles Ă  travers lesquelles des campagnes marketing ponctuelles sont menĂ©es). Il est recommandĂ© de dĂ©finir les serveurs autorisĂ©s pour le domaine via la liste des rĂ©seaux ('ip4' / 'ip6'). SPF est vĂ©rifiĂ© pour l'adresse de l'expĂ©diteur Ă  partir de l'enveloppe SMTP. VĂ©rifiez que le domaine d'enveloppe SMTP (enveloppe-de) correspond au domaine de l'en-tĂȘte De. Les erreurs SPF courantes sont rĂ©pertoriĂ©es dans cet article .

VĂ©rifiez l'enregistrement DNS DKIM, la validitĂ© et la composition de la signature DKIM. VĂ©rifiez que vous utilisez une clĂ© DKIM d'au moins 1024 bits. Mode de hachage recommandĂ© pour la signature DKIM: dĂ©tendu / dĂ©tendu. Assurez-vous que tous les en-tĂȘtes importants sont signĂ©s (De, À, Objet, Date, ID de message, Version MIME, Type de contenu), que les en-tĂȘtes de suivi (Reçu, LivrĂ© Ă , Chemin de retour) ne sont pas signĂ©s et que DKIM est validĂ© pour services postaux de base. Configurez le transfert vers l'un des services de messagerie vers un autre; DKIM ne doit pas "battre" sur les lettres transfĂ©rĂ©es. VĂ©rifiez que le domaine de signature DKIM correspond au domaine de l'expĂ©diteur Ă  partir de l'en-tĂȘte From.

Vérifiez DMARC pour les services de messagerie de base. Recherchez les rapports DMARC, identifiez et dépannez SPF et DKIM pour toutes les adresses IP de votre infrastructure.

VĂ©rifiez que les messages sont remis Ă  des serveurs externes Ă  l'aide du chiffrement (TLS). Parfois, vous pouvez vĂ©rifier TLS par l'en-tĂȘte Received sur le serveur du destinataire: par exemple, en spĂ©cifiant le protocole ESMTPS ou la prĂ©sence de paramĂštres du formulaire (version = TLS1_2 cipher = ECDHE-RSA-AES128-GCM-SHA256 bits = 128/128); indique la prĂ©sence de TLS.

Vérification de l'application génératrice


Exigences d'adresse postale


Adresses d'enveloppe
Nous commençons la vérification de l'application génératrice avec les adresses dans l'enveloppe SMTP.

Les adresses d'enveloppe sont des adresses du niveau de l'infrastructure de messagerie. Ils ne sont pas visibles pour l'utilisateur, mais importants pour la livraison, car dans quelle boßte aux lettres la lettre est envoyée, elle est déterminée précisément par l'adresse de l'enveloppe.

L'adresse du destinataire dans une enveloppe (enveloppe-à, alias RCPT TO :) est l'adresse à laquelle la lettre sera effectivement livrée.

  • pour toutes les lettres Ă  l'exception de l'inscription, l'adresse doit ĂȘtre lĂ©galement signĂ©e et validĂ©e pour l'envoi conformĂ©ment aux exigences administratives.
  • pour les newsletters, l'adresse doit ĂȘtre «en direct», les adresses auxquelles les lettres ne peuvent pas ĂȘtre livrĂ©es rĂ©guliĂšrement doivent ĂȘtre marquĂ©es comme inactives, aucun courrier ne doit leur ĂȘtre envoyĂ©. Mais certaines catĂ©gories de lettres (par exemple, la rĂ©cupĂ©ration d'accĂšs) peuvent Ă©galement devoir ĂȘtre envoyĂ©es Ă  des adresses prĂ©cĂ©demment marquĂ©es comme inactives.

Adresse de l'expéditeur dans une enveloppe SMTP (généralement appelée enveloppe-de, smtp.mailfrom ou Return-Path) - des messages seront livrés à cette adresse concernant l'impossibilité de remettre une lettre et des réponses automatiques. Cette adresse n'est pas visible pour l'utilisateur. Cette adresse est également utilisée pour l'autorisation SPF. Nous vérifions que:

  • l'adresse est disponible;
  • Ce n'est pas l'adresse de l'employĂ© et il n'est pas redirigĂ© vers lui pour exclure les rĂ©ponses automatiques, les messages d'inaccessibilitĂ©, etc .;
  • Il est traitĂ© par un script qui marquera les adresses des utilisateurs inaccessibles comme inactives;
  • l'adresse peut ĂȘtre gĂ©nĂ©rĂ©e automatiquement, c'est-Ă -dire unique Ă  chaque lettre;
  • Une lettre Ă  cette adresse ne doit pas conduire Ă  la gĂ©nĂ©ration d'une lettre de rĂ©ponse, par exemple un message concernant un dĂ©bordement de boĂźte.

Adresses d'en-tĂȘte de messagerie

Ces adresses sont soit directement visibles par l'utilisateur, soit utilisées lors de la réponse à une lettre.

Adresse de l'expĂ©diteur (Ă  partir de :) L'en-tĂȘte est l'adresse et le nom de l'expĂ©diteur affichĂ©s dans la liste des lettres et lors de la lecture d'une lettre. Nous vĂ©rifions que:

  • Il s'agit d'une adresse conviviale «lisible par l'homme» qui identifie l'entreprise.
  • Il contient non seulement le courrier Ă©lectronique, mais Ă©galement le nom de l'expĂ©diteur.
  • n @ply est possible, mais seulement si nous voulons souligner que nous ne nous attendons pas Ă  recevoir une rĂ©ponse Ă  la lettre et qu'elle ne sera pas lue. Il vaut mieux reproduire cette idĂ©e dans le texte de la lettre.
  • En prĂ©sence de caractĂšres non ASCII (par exemple cyrillique), le nom de l'expĂ©diteur doit ĂȘtre codĂ© conformĂ©ment Ă  MIME, le domaine en prĂ©sence de caractĂšres non ASCII doit ĂȘtre codĂ© en Punycode.
  • Les lettres de la mĂȘme catĂ©gorie doivent avoir la mĂȘme adresse; l'utilisation d'adresses gĂ©nĂ©rĂ©es automatiquement n'est pas autorisĂ©e. Cela est dĂ» au fait que From: est le plus souvent utilisĂ© par les gens pour trier les lettres dans des dossiers Ă  l'aide de filtres.
  • L'adresse doit ĂȘtre diffĂ©rente (de prĂ©fĂ©rence dans des sous-domaines diffĂ©rents) pour les lettres transactionnelles, marketing et urgentes (telles que les lettres du service d'assistance). Cela est Ă©galement dĂ» au fait que l'utilisateur peut marquer les e-mails marketing comme spam ou les filtrer dans un dossier illisible.
  • L'adresse de provenance et l'adresse d'enveloppe SMTP doivent ĂȘtre dans le mĂȘme domaine ou dans des sous-domaines du mĂȘme domaine d'organisation afin de passer le SPF dans le DMARC.
  • L'adresse doit provenir du domaine de l'organisation. Il est inacceptable d'utiliser des services de messagerie gratuits et d'autres domaines de messagerie publique dans De, car ces mailings ne passeront pas l'authentification SPF et DKIM dans le cadre de DMARC.

Adresse de réponse - les réponses «manuelles» seront envoyées à cette adresse lorsque l'utilisateur répond à la lettre. Elle est facultative: si elle est absente, l'adresse de From est utilisée pour la réponse. Vérifiez que Répondre à:

  • Il peut ĂȘtre gĂ©nĂ©rĂ© automatiquement, c'est-Ă -dire unique Ă  la lettre (permet de savoir Ă  quelle lettre la rĂ©ponse est arrivĂ©e).
  • Il ne doit pas tomber dans la boĂźte de l'employĂ© pour Ă©viter de rĂ©pondre aux appels, mais devrait idĂ©alement ĂȘtre «enveloppé» dans CRM.
  • Il peut gĂ©nĂ©rer une rĂ©ponse automatique CRM standard, mais il ne doit pas gĂ©nĂ©rer quoi que ce soit de superflu, par exemple, des messages sur un dĂ©bordement de boĂźte. Lors de la gĂ©nĂ©ration de rĂ©ponses automatiques, des mesures doivent ĂȘtre prises pour Ă©viter le bouclage, elles sont rĂ©pertoriĂ©es dans la RFC 3834.
  • Il peut provenir de n'importe quel domaine qui ne coĂŻncide pas nĂ©cessairement avec From, mais cela effraie parfois les utilisateurs lorsqu'ils rĂ©pondent.
  • Peut ĂȘtre absent, alors l'adresse De remplit ses fonctions.
  • En plus de l'adresse, le nom de l'expĂ©diteur est indiquĂ©.

Pour adresser:

  • Il doit contenir l'e-mail du destinataire (sinon il effraie le destinataire du message et protĂšge l'anti-spam).
  • IdĂ©alement, il devrait contenir le nom du destinataire. Mais si le nom est inconnu ou douteux (par exemple, l'adresse n'a pas encore Ă©tĂ© confirmĂ©e), il est prĂ©fĂ©rable de ne pas l'indiquer (quelqu'un peut entrer l'adresse de quelqu'un d'autre avec un mauvais nom, et le destinataire peut ĂȘtre offensĂ© par vous).

Exigences de l'en-tĂȘte de l'e-mail


L'encodage rĂ©el du texte doit correspondre Ă  celui indiquĂ© dans l'en-tĂȘte. Il est conseillĂ© d'utiliser un seul codage dans tous les en-tĂȘtes et parties de la lettre. Il est recommandĂ© d'utiliser UTF-8 comme Ă©tant largement pris en charge. L'encodage est indiquĂ© dans les en-tĂȘtes Content-Type et dans la balise <META> de la partie HTML.

Les en-tĂȘtes From:, Message-ID: et Date: doivent ĂȘtre formĂ©s directement dans le script pour l'envoi de la lettre (et selon les normes - avec le texte de la lettre) et toujours dans le format correct. S'ils sont absents ou mal formĂ©s, l'un des serveurs de transit peut ajouter ces en-tĂȘtes, ce qui entraĂźne une violation de l'intĂ©gritĂ© de la signature DKIM.

Les caractĂšres de 8 bits dans les en-tĂȘtes, y compris la ligne d'objet (Objet) et les noms des fichiers joints (Content-Type et Content-Disposition), doivent ĂȘtre absents; Tous les caractĂšres non ASCII, y compris cyrillique, doivent ĂȘtre codĂ©s en imprimable entre guillemets ou en base64.



Conditions requises pour la structure de la lettre


Pour la partie HTML de la lettre, il est souhaitable de former une partie alternative (texte brut). Il est également nécessaire de vérifier la conformité et la lisibilité de la partie en texte brut de la lettre (le cas échéant) et la structure générale de la lettre.

Selon la RFC 5322, la longueur de ligne dans une lettre ne doit pas dĂ©passer 998 caractĂšres 8 bits. Veuillez noter qu'en UTF-8, un personnage peut occuper plusieurs octets. Le terminateur des lignes dans l'e-mail est une paire de CRLF (<cr> ascii 13, lf> ascii 10), qui occupe 2 octets. Vous devez vĂ©rifier l'exactitude du terminateur de chaĂźne, car les lettres sont souvent envoyĂ©es Ă  l'aide d'un script Unix, et dans Unix, le terminateur de ligne est un caractĂšre lf unique - il s'agit d'une erreur pour le courrier Ă©lectronique. Vous devez Ă©galement vĂ©rifier si les terminateurs de chaĂźne rompent les caractĂšres codĂ©s UTF-8: vous ne pouvez pas autoriser la prĂ©sence d'un terminateur de chaĂźne entre deux octets du mĂȘme caractĂšre, par exemple cyrillique. , base64.

— «Content-Disposition: inline», , , «Content-Disposition: attachment», .
, , : , multipart- (mixed, alternative, related), multipart/mixed , multipart/related — , multipart/alternative — plain text- HTML-. , -, :

multipart/alternative
— text/plain
— text/html

, text/plain text/html multipart/related. , HTML-, - — plain-.

- :

multipart/alternative
— text/plain
— multipart/related
—— text/html
—— image/
 (-)
—— image/
 (-)

- Content-Disposition: inline multipart/related-.

, , , :

multipart/mixed
— multipart/alternative
—— text/plain
—— multipart/related
——— text/html
——— image/png
——— image/png
...
— application/octet-string (content-disposition: attachment)
— application/octet-string (content-disposition: attachment)
...

(multipart/related- multipart/alternative- , multipart/mixed-)





URI


URI ( src, href, ..) ( https://example.com/somepath ). (/somepath) (//example.com/somepath), , .. file://.



  • ASCII- ( , ) URI percent encoding.
  • , (.. URL, ), <>, . - , . href A , - . «», .
  • htt://, htts:// milto:.
  • http:// htts://.
  • (, example.com :8080/somepath), .. .
  • HTML- - (, , ..) , .. - , ; , , , ( - GET-, POST PUT).
  • List-Unsubscribe, , - , .. .
  • , , , (, ). . , , , , , .
  • Parce que URI , URI data:. URI.
  • , . , , .
  • - .


?

. — (XSS, Crossite scripting), (interface spoofing), DOM clobbering, / (, IP- ) .., . , . :

  • ,
  • / ,
  • ,
  • ( ),
  • (.. ) ,
  • HTML- ( Microsoft Exchange / Outlook RTF, - Outlook ),
  • .

, - URI cid://, . , Mozilla Thunderbird cid:// .

- - .

. , URI, - , - , . : , ( , ).

:

  • , , , , .
  • .
  • , , , . ( ). . , .
  • , .
  • , , .. -, - , c, , ( , , , , - ). , , .
  • .
  • , , , . (, - ), , , , .
  • .
  • :
    • : « » Mail.Ru, Yandex, Gmail, Rambler Outlook.com;
    • ;
    • , IMAP, , iPhone, Pixel ( Android), Samsung ( Android), MIUI ( Android-);
    • : Chrome, Firefox, Edge, Internet Explorer, Opera .;
    • ( ), Thunderbird, Outlook Apple Mail, The Bat! Opera Mail;
    • - (Exchange, Roundcube, Communigate, Zimbra, SquirrelMail) — B2B-;
    • Retina-, .
  • :
    • , SPF/DKIM/DMARC.
    • : , .
    • : , , , (, «»).
    • : , .., .
    • .
    • .
    • .
    • , . , , - , , .



  • ( ) , . , .
  • , , , .. , , , «» .
  • . , DKIM- - ( DNS DKIM-, ), - ( , , From, Date Message-ID) - ( , , ). «» , .

-


, , .

, , ( ). . , , .

CTR — . postmaster.mail.ru . (), . CTR < 10% — , . CTR > 30%. CTR («») . ( ). , — . , , : https://help.mail.ru/developers/mailing_rules/technical .

- . CTR . ( ). «» — 10 000 , .

: , , . « » . , .

z3apa3a s4ever . EdT 4Alexander .

Source: https://habr.com/ru/post/fr419591/


All Articles