当我使用 Linux 的“mail”命令时,邮件实际上是如何发送的?

use*_*001 21 linux email command-line

mail从 linux 终端使用命令时,使用哪个电子邮件帐户发送电子邮件,如下所示:

echo "Body of email" | mail -s "Subject" abc@def.com
Run Code Online (Sandbox Code Playgroud)

如果没有发送邮件,是否需要指定发送邮件地址的用户名和密码?mail我读过的所有教程都没有指定发件人地址。

编辑:因此,如果我收到“不支持向远程域发送邮件”的错误消息,这是否意味着我的 ISP 已阻止发送电子邮件?有没有办法解决?谢谢。

use*_*686 15

从 linux 终端使用 mail 命令时,使用哪个电子邮件帐户发送电子邮件,如下所示:

在默认配置中,它与您用于登录的帐户完全相同。您的计算机安装了邮件服务器程序(MTA);通常是 Postfix 或 Exim4,有时是 Sendmail 或 qmail。

此帐户的电子邮件地址是或,可以从中获取 FQDN 。但是,现在你无法接收邮件这个帐户,因为MTA被配置为“仅本地邮件”(如下错误信息说的),也不会接受来自外部的消息。your-login@hostnameyour-login@fqdnhostname -f

编辑:因此,如果我收到“不支持向远程域发送邮件”的错误消息,这是否意味着我的 ISP 已阻止发送电子邮件?有没有办法解决?

不; 此错误消息是由您自己的计算机返回的。邮件服务器配置为仅传输本地邮件——从一个用户到另一个用户(最常见的是,如果 cronjob 失败,则从cron守护程序)。通常这些信息去和是可读的使用,,,或类似的计划。(IIRC,Thunderbird 也能够导入本地邮件假脱机。)/var/mail/loginmailmuttre-alpine

重新配置邮件服务器以向/从其他站点发送和接收邮件并不难;根据安装的 MTA 和 Linux 发行版,甚至一个命令就足够了:例如,dpkg-reconfigure postfix如果系统是带有 Postfix 的 Debian。

但是,我猜您是在个人计算机上使用它,因此最好改用外部邮件帐户 - 例如,如果您有 Gmail 地址,则使用它。找出安装了哪个 MTA(在 Ubuntu/Debian 上,dpkg -S /usr/sbin/sendmail会告诉你),然后谷歌搜索“ program-name relay gmail”以获得教程。

或者,安装专为中继设计的 MTA;msmtp并且esmtp是不错的选择并且易于配置。


Kar*_*los 5

mail 命令发送当前账户下的邮件,即 username@domain ;但是,通常互联网服务提供商会阻止用户运行自己的邮件服务器(通过阻止相关端口)以避免垃圾邮件,因此您的电子邮件不会被发送。

但是发送问题也可能与您机器的配置有关。

编辑:启用邮件以从 gmail 发送电子邮件。将以下信息放入您的 ~/.mailrc 文件中,该文件提供邮件的基础配置。但是,请确保此文件仅供您访问(使用 chmod 600 ~/.mailrc)

account gmail {
set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp.gmail.com:587
#set smtp-auth=login
set smtp-auth-user=name@gmail.com
set smtp-auth-password=pass
set from=name@gmail.com
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,电子邮件将来自“name@gmail.com”。

  • 请注意,此 `mailrc` 语法特定于 `heirloom-mailx`。一些系统可能带有 GNU `mailutils` 或 BSD `mailx`,两者都会抱怨语法错误。(如果发生这种情况,我建议安装 `heirloom-mailx` - 或者更好,`mutt` 或 `re-alpine`。) (2认同)