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


13

我应该做的是从Ubuntu发送电子邮件。我发现最简单的方法是使用Thunderbird并将我的真实电子邮件地址(abc@hotmail.com)链接到Thunderbird帐户。我可以通过这种方式成功接收电子邮件并下载完整的历史记录。但是,我无法发送电子邮件。

我要做的是直接从Ubuntu发送电子邮件,并显示为user1 @ localhost或类似名称。

那有可能吗?在阅读了有关此主题的不同主题之后,看来使用中继地址是唯一的方法。

我还安装了Postfix,方法与那里写的相同: 如何设置邮件服务器? 当要求我选择安装类型时,我选择了Internet站点。

我有的选择:

  • 没有配置;
  • 互联网网站;
  • 带有smarthost的互联网;
  • 卫星系统;
  • 仅本地;

当询问系统邮件名称时,我进入了我拥有的网站:some_website.com。我仍然没有弄清楚如何通过后缀发送电子邮件,但是我假设将再次使用中继服务器。

我正在将Ubuntu 11.10作为虚拟机运行。

我希望这个问题有意义。

Answers:


13

这并不是完全合理的,因为您已经说过“应该做”,就好像这是您的工作。您是否正在虚拟机中设置真实的邮件服务器?我认为这意味着您需要虚拟服务器具有邮件系统,但是该虚拟服务器不是全职的“真实” SMTP服务器。(否则,您可能已经知道了,我很奇怪。)

考虑到这一点,您将需要“ Internet with smarthost”选项。本质上,主要原因是全球配置良好的SMTP服务器都使用了反垃圾邮件措施。其中包括拒绝来自已知动态地址池(垃圾邮件制造者喜欢使用)的所有SMTP连接。因此,您需要使用另一个SMTP服务器发送邮件。

如果您要坚持使用Postfix,则很容易做到:只需搜索与将Postfix设置为智能主机有关的Ubuntu文章。但是,如果您对一个系统与另一个系统没有特别的亲和力,则有一个专门为此设计的软件包:ssmtp。因此,如果您想尝试一下,那么只需安装ssmtp。

警告:以下操作将删除后缀或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

现在,您的系统将按照您想要的方式发送邮件。您可以将localhost用作外发SMTP服务器的GUI应用程序中的邮件服务器。但是CLI呢?使用mail软件:

sudo apt-get install heirloom-mailx

现在,您还可以在命令行中使用类似以下内容的邮件:

mail < filename.ascii someone@somewhere.com -s "My File"

或者,如果您用于mail撰写邮件,请键入(mail someone@somewhere.com),然后在空白行上用单个句号结束邮件。更好的CLI邮件客户端是muttpine

这是您需要的角度吗?如果是这样,成功了吗?


1
当我尝试发送电子邮件时,Mutt会说“ sendmail:无法打开:25”。ssmtp说“ ssmtp:无法打开:25”我也说过我可以通过Thunderbird发送电子邮件,但我认为我错了。对于那个很抱歉。在尝试通过Thunderbird发送电子邮件以及使用CLI邮件客户端时有关端口25的消息时,我超时了。
afaf12 2012年

@ afaf12检查防火墙是否被阻止。连接超时错误主要是由于防火墙问题引起的。
Mughil 2012年

1
远程邮件服务器是否通过配置或防火墙来限制对某些地址范围的访问?

您是否需要在此远程邮件服务器上使用提交端口:465?

我无法sudo /etc/init.d/ssmtp restart在我的机器上工作。
Nam G VU 2012年

1

如果您使用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 2012年

0

我在一个无聊的盒子上测试了它,并完美地工作了。通过运行命令安装以下内容

apt-get安装php-pear

梨安装邮件

梨安装Net_SMTP

梨安装Auth_SASL

梨安装mail_mime

然后通过运行以下命令安装postfix

apt-get安装后缀

在安装过程中选择-

Internet站点和本地主机代替服务器,因为我们在本地主机上尝试

在此之后运行以下命令

须藤vim /etc/ssmtp/ssmtp.conf

对文件进行更改

将此更改为ssmtp.conf文件

FromLineOverride =是

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

-此命令的输出类似于

来自sc-in-f108.1e100.net(74.125.68.108)的64个字节: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

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.