SMTP: Czy można kogoś przesłać CC bez wysyłania oryginału?


24

Właściwie zacząłem o tym myśleć, ponieważ zapomniałem wysłać komuś wiadomość na adres e-mail, który miałem wysłać, i chciałem, aby otrzymał kopię bez podwójnego wysyłania do wszystkich innych. W końcu po prostu mu to przekazałem, ale nadal jestem ciekawy.

Gdzie obsługiwane są listy CC i BCC w SMTP? Czy musisz kontrolować serwer SMTP, czy może to zrobić po stronie klienta?

Dzięki!

email  smtp 

5
dlaczego jest to przegłosowane? To w końcu interesujące pytanie ...

5
@Ailles - Szczegóły, czy jest to możliwe, ABSOLUTNIE stanowią pytanie programowe IMHO. Jest zdefiniowany w dokumentach RFC 2821 i 2822. Pod koniec dnia wszyscy klienci pocztowi są zaprogramowani zgodnie z tymi definicjami, a każdy programista może w pewnym momencie musiał zagłębić się w SMTP. Na pewno mam.

3
PROSZĘ przestać głosować, aby zamknąć to, ponieważ „należy do SuperUser”. Tylko dlatego, że OP mówi, że to właśnie wysłanie e-maila sprawiło, że pomyślał o tym problemie, nie powoduje, że pytanie „nie jest związane z programowaniem”. Gdybym miał pytanie dotyczące implementacji protokołu HTTP, które przyszło mi do głowy po kliknięciu łącza internetowego, czy byłoby to „niezwiązane z programowaniem”? Nie.

Odpowiedzi:


17

W skrócie - tak, możliwe jest bezpośrednie połączenie z serwerem SMTP odbiorców. Z powodów, które Rup opisuje w swojej odpowiedzi , może to nie być szczególnie praktyczne, a jeśli jesteś w sieci za zaporą ogniową, możesz nie być w stanie uzyskać połączenia ze zdalnym serwerem na porcie TCP 25.

Zakładając, że to nie dotyczy ciebie, oto szczegóły:

Kiedy (jako klient pocztowy) łączysz się z serwerem pocztowym odbiorcy, wszystkim, na czym ten serwer się troszczy (dla celów dostarczania) są odbiorcy wyszczególnieni w RCPT TO:. Zobacz RFC2821 - Simple Mail Transfer Protocol . Nie rozróżnia typu odbiorcy (do :, cc: lub bcc :), po prostu wie, że mówisz „upewnij się, że odbiorca na twoim serwerze to otrzymuje”.

Jednak jeśli chodzi o rzeczywistego klienta poczty odbiorcy, to nagłówki wiadomości mówią, kim byli wszyscy odbiorcy wiadomości. Patrz RFC2822 - Internetowy format wiadomości .

Innymi słowy, nagłówki TO :, CC: i BCC: są dostępne na korzyść klienta poczty, podczas gdy faktyczna dystrybucja jest obsługiwana podczas „rozmowy” SMTP z serwerami poczty.

Możesz więc rozmawiać z serwerem SMTP, który wygląda mniej więcej tak:

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: <test@mydomain.co.uk>
250 2.1.0 OK f70si17620845wej.110
RCPT TO: <user_i_missed_out@mydomain.co.uk>
250 2.1.5 OK f70si17620845wej.110
DATA
354  Go ahead f70si17620845wej.110
To: recipient_on_original@somewhere.com
cc: another_recipient_on_original@somewhere.com, user_i_missed_out@mydomain.co.uk
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.

Efektem netto jest user_i_missed_out@mydomain.co.ukotrzymanie kopii wiadomości e-mail, która ma go na liście DW, jak również pierwotnego adresata recipient_on_original@somewhere.comi oryginalnego odbiorcy DW another_recipient_on_original@somewhere.com.

Ponieważ jednak nigdy tak naprawdę nie łączyliśmy się z serwerami poczty tych dwóch ostatnich, nie otrzymywali oni e-maila za drugim razem. A ponieważ nie możemy zmienić wcześniej wysłanych do nich wiadomości, nigdy nie zauważą, że dodaliśmy kolejnego odbiorcę DW.


4

Co się dzieje?

  1. Wysyłasz wiadomość e-mail na lokalny (lub ISP) serwer SMTP
  2. Twój lokalny serwer SMTP rozwija listę adresatów i opracowuje listę serwerów, z którymi będzie musiał porozmawiać dla wszystkich adresatów. Usuwa nagłówek BCC z wiadomości.
  3. Dla każdego serwera łączy się i mówi „Oto adres e-mail dla adresatów X, Y: oto nagłówki i treść wiadomości”

tzn. jeśli możesz wstrzyknąć wiadomość e-mail do 3, dostarczyć bezpośrednio do domowego serwera SMTP brakującego użytkownika CC, możesz dostarczyć im CC bez konieczności wysyłania wiadomości do wszystkich innych. W szczególności odbiorca BCC otrzyma nagłówki i treść wiadomości, które w ogóle o nich nie wspominają (może z wyjątkiem nagłówka „X-Envelope-To”).

W praktyce jest jednak o wiele łatwiej wysłać do wszystkich. Aby to zrobić skutecznie, musisz zmodyfikować klienta poczty e-mail i lokalny serwer SMTP, aby obsługiwał fałszywą listę adresatów lub listę wykluczeń „nie wysyłaj tak naprawdę do”, którą przetwarza podczas ekspansji adresatów.


2

Problem ten został rozwiązany przez istniejącą pracę w toku IETF: kosmetyczną kopię węglową . Niestety nie znam żadnego klienta poczty e-mail, który faktycznie implementuje CCC, ponieważ projekt ten jest powszechnie uważany za bezsensowny żart na prima aprilis.

Z całą powagą, to, o co pytasz, jest możliwe, głównie dlatego, że treść wiadomości e-mail nie ma wpływu na to, do kogo jest wysyłana na warstwie SMTP. Klienci poczty e-mail są zapisywani, aby wysyłać pocztę do wszystkich osób w polach Do, DW i UDW, ale nie jest to wymagane według żadnego standardu.

Zaktualizowano: Mówiąc ściślej, wysyłając pocztę na serwer SMTP, nadawca używa polecenia RCPT, aby określić, na które adresy e-mail ma zostać dostarczona wiadomość. Następnie wysyła zawartość wiadomości za pomocą polecenia DATA. Serwer SMTP nie powinien patrzeć na treść. Powinno być możliwe dodanie jednego odbiorcy do wiersza nagłówka CC wiadomości i poproszenie serwera SMPT o dostarczenie go tylko pod ten jeden adres.


0

Jeśli dobrze to rozumiem, próbujesz wysłać wiadomość po raz drugi, łącznie z oryginalnymi adresatami w nagłówkach Do: i DW:, ale tę wiadomość otrzymają tylko niektórzy dodatkowi odbiorcy. Jak zauważono w innych odpowiedziach, można to osiągnąć dzięki klientowi poczty e-mail komunikującemu się z serwerem SMTP i określając tylko jednego odbiorcę, ale włączając nagłówki Do: i DW: oryginalnego e-maila.

Apple Mail klient posiada funkcjonalność, która może skutecznie to zrobić. Funkcję przekierowania można znaleźć w menu Wiadomość lub w menu kontekstowym wiadomości. Ta funkcja została zaprojektowana jako sposób na przezroczyste przekazywanie wiadomości e-mail do kogoś innego bez dodawania Fwd: do tematu i zwiększania poziomu wyceny, ale można jej również używać w wiadomościach, które wcześniej wysłałeś. Utrzymuje to samo pola Do / DW / Od oryginalnej wiadomości i dodaje nowych odbiorców w nagłówkach Resent-To i Resent-CC. Jedynymi adresatami wysłanej wiadomości będą ci, których określisz podczas jej tworzenia. Nie jest do końca oczywiste, jak to działa, gdy korzystasz z tej funkcji, więc wypróbuj ją wcześniej.


-1

Może być dozwolone / zabronione na zasadzie klient-klient, ale możesz spróbować umieścić coś fałszywego (np. „;; nieujawnionego adresata ;;”) w polu To i umieścić wszystkich w BCC. Powtórzenie tego procesu sprawi, że będzie wyglądać jak ten sam e-mail, pod warunkiem, że nikt nie będzie wystarczająco uważnie obserwował znaczników czasu i wiadomości w wątkach.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.