1

Is there a way to send email where receiver sees multiple recipient email addresses includes his, but in fact only send to one receiver himself?

KMC
  • 1,939
  • 9
  • 32
  • 43

2 Answers2

2

Absolutely. During the sending phase you need to only talk to the MX server of the recipient and only specify them in the RCPT command. But I know of no MUA that can do so.

Ignacio Vazquez-Abrams
  • 111,361
  • 10
  • 201
  • 247
2

Yes, it is always possible to have the SMTP recipient list completely different from the "To:" or "Cc:" headers; the servers don't really care about the headers.

For example, that's how "Bcc:" addressing works (as there is no "Bcc:" header at all), but it can also go the other way and include headers that have nothing to do with the real recipient list.

In a SMTP conversation, it would look like this:

$ nc mailserver.example.net smtp
← 220 mailserver.example.net ESMTP Hello!
→ ehlo yourhostname.isp.net
← 250 mailserver.example.net
→ mail from:<[email protected]>
← 250 OK
→ rcpt to:<[email protected]>
← 250 OK
→ rcpt to:<[email protected]>
← 250 OK
→ data
← 354 Waiting for data
→ To: <[email protected]>, <[email protected]>
→ Subject: Hello there.
→ Content-Type: text/plain; charset=utf-8
→
→ The thing about email is that you can spoof practically everything.
→ .
← 250 OK
→ quit
← 221 Bye

The addresses given in the envelope – rcpt – are the actual recipients. They will receive the message.

The addresses given in the header – To: – are only for display purposes. They are not used for sending.

When using the Unix sendmail interface, the same rule applies except the recipients are given in the command line:

$ sendmail [email protected]
→ To: <[email protected]>, <[email protected]>
→ Subject: Hello there.
→ Content-Type: text/plain; charset=utf-8
→
→ One thing about email is that you can spoof practically everything.
→ CtrlD
u1686_grawity
  • 426,297
  • 64
  • 894
  • 966
  • what is the different between using "nc" and "telnet" to connect to mail server? usually I use "telnet mailserver.domain.com 25" – KMC Feb 03 '12 at 01:05
  • @KMC: The Telnet protocol normally performs option negotiation immediately after connection, and if the server does not speak Telnet (for example, a SMTP server), client-initiated negotiation would confuse the server. However, smarter Telnet clients (including most command-line `telnet` versions) will not attempt the negotiation when telnetting to non-default ports. So **in the end, there is no difference – I used `nc` just out of habit.** (In fact, `nc` is slightly worse since it is IPv4-only, while most Telnet clients also do IPv6.) – u1686_grawity Feb 03 '12 at 14:32