如何向具有域前缀用户名的本地用户发送邮件?
运行 SUSE Linux Enterprise Server 11.3,并使用 Heirloom mailx 版本 12.5 7/5/10 加入 Active Directory 域
设想:
我的服务器上有 2 个用户,一个本地用户帐户和一个域用户帐户:
- 杰夫
- DOM1\约翰
以 DOM1\john 身份登录,我可以从终端发出此命令echo "hello" | mail -s "test" jeff
,并且 jeff 成功接收到该消息。毫不奇怪,标头在FROM
字段中读取转义的反斜杠From: "DOM1\\john"@server.example.com
奇怪的是,如果杰夫只是回复该消息,杰夫将收到一个Undelivered Mail Returned to Sender
收件箱。标题显示,所以我可以看到反斜杠被删除了。我以 jeff 的身份尝试了以下命令来尝试转义反斜杠,但均无济于事,并且在未传递消息的标头中始终省略反斜杠:To: [email protected]
TO
echo "hello" | mail -s "test" DOM1\john
echo "hello" | mail -s "test" 'DOM1\john'
echo "hello" | mail -s "test" "DOM1\john"
echo "hello" | mail -s "test" DOM1\[email protected]
echo "hello" | mail -s "test" 'DOM1\john'@server.example.com
echo "hello" | mail -s "test" "DOM1\john"@server.example.com
echo "hello" | mail -s "test" DOM1\\john
echo "hello" | mail -s "test" 'DOM1\\john'
echo "hello" | mail -s "test" "DOM1\\john"
echo "hello" | mail -s "test" DOM1\\[email protected]
echo "hello" | mail -s "test" 'DOM1\\john'@server.example.com
echo "hello" | mail -s "test" "DOM1\\john"@server.example.com
更奇怪的是,如果我尝试 3 个反斜杠,echo "hello" | mail -s "test" DOM1\\\john
它不会传递消息,也不会发出未传递的消息,它只是默默地失败。
如果我尝试仅发送不带域前缀 的邮件,echo "hello" | mail -s "test" john
我会收到预期的未送达消息,指出用户 john 不存在。
另外,要明确的是,是的,这些域用户有电子邮件帐户,例如[电子邮件受保护],但我们不想发送到该邮件服务器帐户 - 我们只想使用 SLES 上的本地邮件帐户,以便它们可以与该服务器上的其他本地非域帐户进行通信。
答案1
你太轻易屈服了。你看到了标题
From: "DOM1\\john"@server.example.com
这就是您所需要的,但您必须保留双引号和双反斜杠:
echo "hello" | mail -s "test" '"DOM1\\john"@server.example.com'
从维基百科在电子邮件地址的本地部分:
允许使用空格和
"(),:;<>@[\]
字符,但有限制(它们只能在带引号的字符串内使用,...此外,反斜杠...前面必须有反斜杠)。当最外面的引号是本地部分的最外面的字符时,可能存在带引号的字符串...例如“abcdefghixyz”@example.com。然而,引用的字符串和字符并不常用。 RFC 5321 还警告“希望接收邮件的主机应该避免定义本地部分需要(或使用)引用字符串形式的邮箱”。