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


17

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

echo "Body of email" | mail -s "Subject" abc@def.com

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

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

Answers:


12

在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会告诉您),然后在Google上搜索“ program-name relay gmail”以获取教程。

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


感谢您的所有帮助。您建议的pastebin命令最终满足了我的需求。我将致力于设置用于邮件中继的smarthost。
user001 2012年

4

这是发送用户的帐户名和主机名,例如root@myserver。它不一定是可以从外部接收电子邮件的实际邮箱。


2
@ 001难道帮助?
丹尼尔·贝克

2
@ user001:在这种情况下,您可能会看到pastebins,其中有些易于从命令行使用。例如,curl -Fsprunge=\<- http://sprunge.us < myfile
user1686'1

1
@ user001:您有exim4守护程序在运行吗?是否sudo mailq列出消息?您是否检查了发送服务器(/var/log/exim4/mainlog)和收件人(如果可能)的日志?
user1686'1

1
@ user001:可能是您的ISP阻止了连接。这在家庭连接上尤为常见-端口25的所有内容都会被丢弃,以减少受感染PC发送的大量垃圾邮件。(不过,您仍然可以配置中继,它使用不同的端口和SMTP身份验证。)
user1686 2012年

1
@ user001:通过另一个邮件服务器(有时称为“ smarthost”)进行中继。如果学院有自己的邮件域,则网络管理员可能会对此提供帮助。如果没有,您可以将服务器配置为从Gmail或类似邮箱发送;教程在这里
user1686'1

4

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

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

编辑:使邮件能够从例如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
}

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


@ user001:您是否只想发送邮件(例如从脚本发送邮件)还是也可以接收邮件?
卡洛洛斯

只是为了能够从脚本发送消息。谢谢。
user001

2
请注意,此mailrc语法特定于heirloom-mailx。某些系统可能随附有GNU mailutils或BSD mailx,它们都会抱怨语法错误。(如果发生这种情况,我建议安装heirloom-mailx-甚至更好,mutt或者re-alpine。)
user1686'1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.