SMTP: Est-il possible de CC quelqu'un sans envoyer l'original?

24

En fait, j'ai commencé à y penser parce que j'avais oublié de communiquer avec quelqu'un sur un e-mail que j'étais censé envoyer, et je voulais qu'il en reçoive une copie sans double envoi à tout le monde. J'ai fini par le lui transmettre, mais je suis toujours curieux.

Où sont gérées les listes CC et BCC dans SMTP? Auriez-vous besoin de contrôler le serveur SMTP, ou cela peut-il être fait côté client?

Merci!


la source
5
pourquoi cela est-il sous-voté? C'est une question intéressante après tout ...
5
@Achilles - Les détails de savoir si cela est possible ou non est ABSOLUMENT une question de programmation à mon humble avis. Il est défini dans les RFC 2821 et 2822. À la fin de la journée, tous les clients de messagerie sont programmés selon ces définitions, et chaque développeur ici devra peut-être se plonger dans SMTP à un moment donné. Certainement.
3
S'IL VOUS PLAÎT arrêtez de voter pour fermer ceci comme "appartient à SuperUser". Tout simplement parce que le PO dit que c'est l'action d'envoyer un e-mail qui lui a fait réfléchir sur le problème, cela ne rend pas la question réelle "non liée à la programmation". Si j'avais une question sur l'implémentation de http qui m'est venue à l'esprit lorsque j'ai cliqué sur un lien Web, ne serait-ce pas "lié à la programmation"? Non.

Réponses:

17

En bref - oui, il est possible si vous pouvez vous connecter directement au serveur SMTP des destinataires. Pour les raisons que Rup décrit dans sa réponse, cela peut ne pas être particulièrement pratique, et si vous êtes sur un réseau derrière un pare-feu, vous ne pourrez peut-être pas du tout obtenir une connexion à un serveur distant sur le port TCP 25.

En supposant que cela ne s'applique pas à vous, voici le détail:

Lorsque vous (en tant que client de messagerie) vous connectez au serveur de messagerie du destinataire, tout ce qui importe au serveur (à des fins de distribution) sont les destinataires spécifiés dans RCPT TO:. Voir RFC2821 - Simple Mail Transfer Protocol . Il ne fait pas de différence entre le type de destinataire (à:, cc: ou bcc :), il sait juste que vous dites "assurez-vous que le destinataire sur votre serveur reçoit ceci".

Cependant, en ce qui concerne le client de messagerie du destinataire, ce sont les en-têtes du message qui indiquent qui étaient tous les destinataires du message. Voir RFC2822 - Format de message Internet .

En d'autres termes, les en-têtes TO :, CC: et BCC: sont là pour le bénéfice du client de messagerie, tandis que la distribution proprement dite est gérée lors de la "conversation" SMTP avec les serveurs de messagerie.

Vous pouvez donc, en fait, avoir une conversation avec un serveur SMTP qui ressemble à ceci:

C:>telnet aspmx.l.google.com 25
220 mx.google.com ESMTP f70si17620845wej.110
HELO myserver.mydomain.co.uk
250 mx.google.com at your service
MAIL FROM: <[email protected]>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <[email protected]>
250 2.1.5 OK f70si17620845wej.110
DATA
354  Go ahead f70si17620845wej.110
To: [email protected]
cc: [email protected], [email protected]
Subject: My email

Hi - this is a test
.
250 2.0.0 OK 1277401976 f70si17620845wej.110
QUIT
221 2.0.0 closing connection f70si17620845wej.110


Connection to host lost.

L'effet net est que [email protected]reçoit une copie de l'e-mail qui l'a sur la liste cc ainsi que le destinataire d'origine [email protected]et le destinataire cc d'origine [email protected].

Cependant, comme nous ne nous sommes jamais connectés aux serveurs de messagerie des deux derniers, ils ne reçoivent pas réellement l'e-mail une deuxième fois. Et comme nous ne pouvons pas modifier les courriers qui leur ont déjà été envoyés auparavant, ils ne remarqueront jamais que nous avons ajouté un autre destinataire cc.

Rob Levine
la source
4

Ce qui se produit est

  1. Vous envoyez l'e-mail à votre serveur SMTP local (ou FAI)
  2. Votre serveur SMTP local étend la liste des destinataires et élabore la liste des serveurs avec lesquels il devra parler pour tous les destinataires. Il supprime l'en-tête BCC du message.
  3. Pour chaque serveur, il se connecte et dit "Voici un email pour les destinataires X, Y: voici les en-têtes et le corps du message"

c'est-à-dire que si vous pouvez injecter l'e-mail dans 3, livrer directement au serveur SMTP de l'utilisateur CC manquant, vous pouvez alors lui remettre le CC sans avoir à envoyer le courrier à tout le monde. En particulier, un destinataire BCC recevra des en-têtes et un corps de message qui ne les mentionnent pas du tout (sauf peut-être un en-tête «X-Envelope-To»).

En termes pratiques, cependant, il est beaucoup plus facile d'envoyer à tout le monde. Pour le faire efficacement, vous devez modifier votre client de messagerie et votre serveur SMTP local pour prendre en charge une fausse liste de destinataires, ou une liste d'exclusion de ne pas vraiment envoyer à, qu'il traite pendant l'expansion des destinataires.

Rup
la source
2

Ce problème est en fait résolu par un travail en cours de l'IETF: la Cosmetic Carbon Copy . Malheureusement, je ne connais aucun client de messagerie qui implémente réellement les CCC, car le projet est largement considéré comme une blague inutile pour le poisson d'avril.

Sérieusement, ce que vous demandez est possible, principalement parce que le contenu d'un e-mail n'affecte pas réellement le destinataire du courrier sur la couche SMTP. Les clients de messagerie sont écrits pour envoyer du courrier à tout le monde dans les champs À, CC et Cci, mais ils ne sont pas tenus de le faire par aucune norme.

Mise à jour: pour être précis, lors de l'envoi de courrier à un serveur SMTP, l'expéditeur utilise la commande RCPT pour spécifier à quelles adresses e-mail un message doit être remis. Il envoie ensuite le contenu du courrier avec une commande DATA. Le serveur SMTP ne doit pas regarder le contenu. Il devrait être possible d'ajouter un destinataire à la ligne d'en-tête CC d'un message et de demander au serveur SMPT de le livrer à cette seule adresse.

Karmastan
la source
0

Si je comprends bien, ce que vous essayez de faire est d'envoyer un message une deuxième fois, y compris les destinataires d'origine dans les en-têtes À: et CC:, mais que ce message ne soit reçu que par un ou plusieurs destinataires supplémentaires. Comme d'autres réponses l'ont noté, cela peut être accompli par votre client de messagerie communiquant avec le serveur SMTP et en spécifiant un seul destinataire, mais en incluant les en-têtes To: et Cc: de l'e-mail d'origine.

Le client Apple Mail possède des fonctionnalités qui peuvent le faire efficacement. La fonction de redirection se trouve dans le menu Message ou dans le menu contextuel d'un message. Cette fonction est conçue pour être utilisée comme un moyen de transférer de manière transparente un e-mail à quelqu'un d'autre sans ajouter Fwd: à la ligne d'objet et augmenter le niveau de devis, mais elle peut également être utilisée sur les messages que vous avez envoyés précédemment. Il conserve les champs To / Cc / From du message d'origine et ajoute les nouveaux destinataires dans les en-têtes Resent-To et Resent-CC. Les seuls destinataires du message renvoyé seront ceux que vous aurez spécifiés lors de sa composition. Il n'est pas tout à fait évident comment cela fonctionne lorsque vous utilisez la fonctionnalité, alors assurez-vous de la tester au préalable.

NReilingh
la source
-1

Il peut être autorisé / interdit sur une base client par client, mais vous pouvez essayer de mettre quelque chose de faux (comme ";; destinataires non divulgués ;;") dans le To et de mettre tout le monde dans le BCC. Ensuite, répéter le processus ressemblera au même e-mail, tant que personne ne surveillera suffisamment les horodatages et les messages filetés, etc.

David
la source