如何使用sendmail命令发送电子邮件?

3
我在CentOS上安装了sendmail,但没有配置并且没有将其作为守护进程启动。我可以使用以下命令发送电子邮件吗? sendmail admin@remotedomain.com < ./myemailcontent 但是我用这个命令没有成功。它似乎连接到了127.0.0.1然后超时了。 我认为sendmail会连接到远程SMTP服务器(remotedomain.com)来传递电子邮件,但它似乎使用本地SMTP服务器来中继电子邮件。我该如何使用sendmail发送电子邮件?
2个回答

3

要使用sendmail,您首先需要安装postfix:

>> sudo apt-get install postfix

您需要通过运行>> dpkg-reconfigure postfix来配置postfix设置,并根据指示进行操作。然后运行>> service postfix reload来运行服务。

注意:使用sendmail命令别名为/usr/sbin/sendmail。您可以通过键入which sendmail来确定这一点。因此,您只需键入sendmail而不是文件名即可。


要使用sendmail

示例

>> sendmail recipient@whatever.com
Subject: Subject Line
... Email Body Here ...

接着在新的一行按下CTRL+D,这将发送电子邮件。

如果您发现您的电子邮件发送速度缓慢或出现问题,可以参考此链接提供的说明:https://www.digitalocean.com/community/questions/sendmail-is-slow-to-send-mail


如果您想要使用sendmail添加一个文件附件,我推荐使用uuencode。要使用它,您需要安装:

>> sudo apt install sharutils
uuencode将文件编码为电子邮件友好的文本 (https://linux.die.net/man/1/uuencode)。

示例:

uuencode /path/to/file.txt /path/to/file.txt | sendmail "recipient@whatever.com"

请记住,您必须将/path/to/file.txt输入两次,因为它需要一个输入文件和一个输出文件,否则它将运行下面的命令行条目。


3

sendmail是发送电子邮件的“低级”工具/命令。它期望“原始”的电子邮件。
考虑使用更高级别的工具,如mail

如果您想发送简单的电子邮件消息并且喜欢可移植性,请查看下面的脚本:

#!/bin/sh
# sendmail or "sendmail look alike" provided by postfix/exim/...
SENDMAIL=/usr/sbin/sendmail
## Or use custom "sendmail look alike" 
## e.g. msmtp which can send without local SMTP server
#SENDMAIL=/usr/bin/msmtp

TO=me@example.net

$SENDMAIL -i -- $TO <<END_OF_EMAIL
Subject: My test message subject
To: $TO
X-Comment: Use empty line to separate email headers from email body

My test message body
END_OF_EMAIL

你想发送消息到 a) 本地邮箱 b) 远程服务器吗?b => 你有永久的互联网连接吗? - AnFi
即使我像这样发送邮件给本地用户:sendmail -v root < ./mail,它似乎也会发送到本地SMTP服务器:“root...通过中继连接[127.0.0.1]... root...已延迟:由[127.0.0.1]拒绝连接。” - peter
1
让你的脚本使用可配置的sendmail补丁,并使用自定义的“类似于sendmail”的软件,例如msmtp,发送外部消息,而无需从本地smtp服务器获取任何帮助。 - AnFi
  1. 发送邮件到另一个本地用户或账户邮箱可能需要 root 用户或 mail 组权限。请确认您是否已将 procmail 安装为设置 root id?ls -l /usr/bin/procmail -> -rwsr-sr-x 1 root mail ...
  2. 可配置的 sendmail 路径 - 我已修改了我的答案。
- AnFi
1
"sendmail by sendmail.org" 要求运行在 127.0.0.1:25 上监听的本地 sendmail 守护程序。它被引入是为了结束早期安装作为设置根 UID 创建的长字符串安全问题。其他 SMTP/MTA(例如 exim)有不同的要求。 - AnFi
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接