如何从Ubuntu服务器发送电子邮件?

我应该做的是从Ubuntu发送电子邮件。我找到的最简单的方法是使用Thunderbird,并将我的真实电子邮件地址(abc@hotmail.com)链接到Thunderbird帐户。 通过这种方式,我可以成功接收电子邮件并下载完整的历史记录。但是,我无法发送电子邮件。
我想要的是直接从Ubuntu发送电子邮件,并显示为user1@localhost或类似的地址。
这是否可能?在阅读了关于此问题的不同主题后,似乎使用中继地址是唯一的方法。
我还安装了Postfix,与此处所写的方式相同: 如何设置邮件服务器? 当我被要求选择安装类型时,我选择了Internet站点。
我有以下选项:
- 没有配置; - Internet站点; - 带有智能主机的Internet; - Stellite系统; - 仅本地。
当被要求输入系统邮件名称时,我输入了我拥有的一个网站:some_website.com。 我仍然没有弄清楚如何通过Postfix发送电子邮件,但我认为再次会使用中继服务器。
我正在运行Ubuntu 11.10作为虚拟机。
希望这个问题说得通。
3个回答

这不是很合理,因为你说了“应该做”,好像这是你的工作一样。你是在虚拟机中设置一个真实的邮件服务器吗?我猜你需要虚拟服务器有一个邮件系统,但它并不是一个全职的“真实”SMTP服务器。(否则你早就知道了,我猜的。)
考虑到这一点,你需要选择“带有智能主机”的互联网选项。基本上,原因是全球范围内配置良好的SMTP服务器都使用反垃圾邮件措施;其中之一就是拒绝来自已知动态地址池(垃圾邮件发送者喜欢使用的)的所有SMTP连接。因此,你需要使用另一个SMTP服务器来发送邮件。
如果你想继续使用Postfix,很容易实现:只需搜索与在Ubuntu上设置Postfix作为智能主机相关的文章。然而,如果你对某个系统没有特别的偏好,还有一个专门为此设计的软件包:ssmtp。所以,如果你想试试看,只需安装ssmtp即可。
注意:下面的操作将删除postfix或sendmail。
sudo apt-get install ssmtp

然后编辑ssmtp配置文件:
sudo -e /etc/ssmtp/ssmtp.conf

我不知道您可用的SMTP服务器的详细信息,所以我将给出一个GMail的例子:
Root=your_email@gmail.com
Mailhub=smtp.gmail.com:465
RewriteDomain=gmail.com
AuthUser=your_gmail_username # me@gmail.com
AuthPass=your_gmail_password
FromLineOverride=Yes
UseTLS=Yes

现在您的系统将按照您的要求发送邮件。您可以在GUI应用程序中使用localhost作为传出SMTP服务器的邮件服务器。但是对于CLI呢?请使用mail软件:
sudo apt-get install heirloom-mailx

现在你也可以使用类似以下命令行的方式来发送邮件:
mail < filename.ascii someone@somewhere.com -s "My File"

或者,如果你使用mail来撰写邮件(输入mail someone@somewhere.com),然后在空行上以一个句点结束邮件。更好的命令行界面邮件客户端是muttpine
这个角度对你有帮助吗?如果是的话,是否成功了?

1当我尝试发送电子邮件时,Mutt显示"sendmail: Cannot open: 25"。ssmtp显示"ssmtp: cannot open: 25"。我之前说过我可以通过Thunderbird发送电子邮件,但我想我是错的。对此我感到抱歉。当我尝试通过Thunderbird发送电子邮件时,会出现超时错误,并且在使用命令行邮件客户端时会收到关于端口25的消息。 - afaf12
@afaf12 检查一下防火墙是否被阻挡了。连接超时错误主要是由于防火墙问题引起的。 - Mughil
1远程邮件服务器是否通过配置或防火墙限制对某些地址范围的访问? - user8290
您需要在此远程邮件服务器上使用提交端口465吗? - user8290
我无法使 sudo /etc/init.d/ssmtp restart 在我的机器上可用。 - Nam G VU
@NamG.VU 哎呀 - 不是一个服务。不需要重新启动。 - user8290
请注意 - authuser 应该是完整的电子邮件地址:http://support.google.com/mail/bin/answer.py?answer=14257 - HorusKol
哈!刚刚又读了一遍...更正一下:端口465是SSL;端口587是提交。 - user8290
您不需要安装heirloom-mailx来发送邮件:请参阅此处 - jarno

如果您正在使用Thunderbird,您可以配置一个远程服务器用于SMTP。除非您拥有自己的邮件服务器,否则通常会使用您的ISP的中继服务器或您的邮件提供商的SMTP服务器。我成功地将Gmail作为我的SMTP服务器使用,但它需要身份验证。(其他一些主机也可能需要身份验证。)
使用命令telnet mail.example.com 25测试对服务器的访问。如果正常工作,您将收到服务器的横幅消息。
一旦您已经将Thunderbird与服务器配合使用,您可以将Exim或Postfix配置为同一服务器的卫星服务器。如果您不需要从其他应用程序发送电子邮件,则可以跳过此步骤。请注意,出站服务器上的源地址必须接受电子邮件。
编辑:检查您是否启用了iptables并阻止了出站流量。如果是这样,请在所需端口上启用出站流量。您可以使用类似tcptraceroute mail.example.com 25的命令查看您被阻止的位置。tcptraceroute在使用之前需要安装。

Telnet: 无法连接到远程主机:连接超时。我确定远程服务器可以在25号端口接收邮件。我已经成功地从另一台机器(Windows 7)向该远程服务器发送电子邮件。 - afaf12

我在一个虚拟机上测试过,并且完美运行。 通过以下命令安装了以下内容

apt-get install php-pear

pear install mail

pear install Net_SMTP

pear install Auth_SASL

pear install mail_mime

然后通过以下命令安装 postfix

apt-get install postfix

在安装过程中选择--

Internet Site 和 localhost 代替 server,因为我们是在本地主机上尝试

完成后运行以下命令

sudo vim /etc/ssmtp/ssmtp.conf

进行文件更改

将 ssmtp.conf 文件更改如下

FromLineOverride=YES

AuthUser=youremail@gmail.com

AuthPass=你的密码

最重要的是通过以下方式使你的电子邮件对不太安全的应用程序可访问:

https://www.google.com/settings/security/lesssecureapps

然后您可以使用PHP邮件功能或

在终端中输入以下命令以从终端发送电子邮件

$ ssmtp youremail@gmail.com

来自:youremail@gmail.com

至:sendto@email.com

主题:主题

你好,这是我的第一封ssmtp电子邮件!

按Ctrl + D,ssmtp将发送您的电子邮件

您还可以检查SMTP是否在您的计算机上正常工作

ping smtp.gmail.com

- 此命令的输出类似于

64字节来自sc-in-f108.1e100.net(74.125.68.108):icmp_seq = 1 ttl = 63 time = 68.4 ms

telnet smtp.gmail.com 587

- 输出应类似于此

正在尝试74.125.68.108 ...

已连接到gmail-smtp-msa.l.google.com。

220 smtp.gmail.com ESMTP l14sm12513264pfb.73 - gsmtp


  • 相关问题