如何通过我的CentOS服务器发送电子邮件?


21

我刚刚使用CentOS 5.5构建了一个中等的家庭服务器。我希望服务器能够将电子邮件发送到我的Gmail帐户或其他电子邮件帐户,以处理诸如cron作业之类的各种事情。同样,能够通过我也在服务器上运行/开发的PHP应用程序发送电子邮件也将很不错。甚至可以让服务器通过mail命令发送电子邮件。

我知道有100万个Google搜索结果关于将Linux服务器设置为电子邮件服务器或配置sendmail等。但是它们似乎并不是我想要的……至少我不这么认为。我不是要设置一些其他客户端可以连接以发送电子邮件或类似此类内容的公司服务器。

我只希望服务器向我发送有关内容的电子邮件。似乎应该很简单...有人能指出我正确的方向吗?

更新

根据下面的用户请求,我尝试了以下命令:

/bin/mail -s "My Subject" "myaddress@gmail.com" < /home/john/test

没有错误或任何东西。但是电子邮件从未显示在我的收件箱中。这是我的maillog

Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: from=root, size=10906, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, relay=root@localhost
Oct 27 00:52:19 localhost sendmail[13703]: o9R6qJOd013703: from=<root@localhost.localdomain>, size=11209, class=0, nrcpts=1, msgid=<201010270652.o9R6qJhU013702@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Oct 27 00:52:19 localhost sendmail[13702]: o9R6qJhU013702: to=myaddress@gmail.com, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=40906, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (o9R6qJOd013703 Message accepted for delivery)

有什么线索吗?


1
你有没有尝试过?您看到什么样的问题?
伊格纳西奥·巴斯克斯

我不确定要寻找什么。我搜索Google并查看有关设置Linux Mail Server的教程。那是我想要的吗?
杰克·威尔逊

只是注意到这仍然没有答案。出于好奇,您知道了吗?您是否检查过机器是否列在PBL上?spamhaus.org/pbl
Belmin Fernandez,2010年

我没有得到它的工作。我还没有完成sendmail的安装过程,因为下面的海报暗示不应该只发送一封电子邮件。我无法想象我的小型家用服务器被列在垃圾邮件列表中,因为我以前从未发送过电子邮件。
杰克·威尔逊

我什至尝试了上面列出的发送到10minutemail.com电子邮件帐户的简单命令,该命令具有相同的结果和相同的日志消息
Jake Wilson 2010年

Answers:


13

/bin/mail -s "Enter Subject Line here" -a /home/.../whateverFileYouWantAttached "you@YourEmailAddress" < /home/me/textBody.letter

试试上面的命令:)


1
+1您不需要系统上的邮件服务器来发送邮件,就像您不需要桌面上的邮件服务器来发送邮件一样。邮件程序就可以了。
dunxd

1
我尝试了此命令,但没有用。没有错误或任何东西。gmail收件箱中没有邮件显示。看看上面我的邮件记录所说的
杰克·威尔逊

所以...这对我不起作用的任何原因?我应该查看什么日志以确定为什么我没有收到任何邮件?
杰克·威尔逊

6

简单答案:

设置sendmail。这将取决于您的分布,但这一点都不困难。如果您有任何特定问题,请询问。

复杂的答案:

如果您要问这个问题,您可能不应该只是跳枪而已,而是设置sendmail justtt

您需要考虑以下几点:

  1. 您的ISP是否允许您发送电子邮件?您可能位于非服务器IP范围内,因此,许多电子邮件提供商将完全阻止您。

  2. 您将使用哪个地址作为发件人地址?您是否被授权从该地址发送(SPF,DomainKeys等)?如果没有,您的邮件可能会被电子邮件提供商检测为垃圾邮件,这是正确的。

  3. 最后但并非最不重要的一点:您是否真的需要使用自己的SMTP服务?使用ISP的原因有何不足?

过去,设置SMTP服务器并不重要。如今,设置可能会更容易,但是要进行设置以使其实际上将消息发送到人们的邮箱是一个挑战。


3

我可以确认上述建议均未在我的CentOS系统上正常工作-也不是一个。真烦人!

然后,我在运行CentOS 6.4的全新Amazon实例上尝试了同样的方法,即使使用默认配置,我也可以毫无问题地发送邮件。我要做的就是

yum install mailx

之后,如上所述发送邮件就像一个超级按钮。对于Jakub想要做的事情,不需要安装诸如sendmail之类的复杂程序。

必须在我的ISP上进行一些配置,因为到此为止我还没有可配置的防火墙。


2

您需要执行以下操作:

  1. sudo yum install postfix telnet mailx
  2. sudo /etc/init.d/postfix start
  3. sudo vi /etc/postfix/main.cf
  4. 更改 mydestination = mydomain.com, localhost.mydomain.com, localhost

    mydestination = localhost.mydomain.com, localhost

从命令行使用以下内容进行测试

  1. 邮件地址@ example.com主题:
  2. 测试来自demoslice.com的电子邮件
  3. 电子邮件正文。
  4. .

第4位-只有句号可以完成电子邮件的正文。您现在应该有邮件了。

上面的内容可以使您正常工作的MTA(邮件传输代理)。在Slicehost关于CentOS电子邮件设置文章中可以找到一些有助于您进行更高级设置的资源(向下滚动到“ CentOS和电子邮件”部分)。您应该真正考虑正确设置以下各项:使用DNS提供程序记录主机名,RDNS(反向DNS)和SPF(发件人策略框架)记录。


这是一个绝妙的答案-简短有效。
2011年

1

您是否修改了/etc/mail.rc来设置smtp地址?


1
的内容/etc/mail.rcset ask askcc append dot save crt ignore Received Message-Id Resent-Message-Id Status Mail-From Return-Path Via什么,你建议我做什么?
杰克·威尔逊

0

尝试安装postfix并在配置文件中设置mydestination,即使它可以与sendmail一起使用。


0

Postfix处于正确的轨道上,但是除非gmail认为您至少是合法的远程用户(例如,您不是垃圾邮件发送者),发送邮件的可能性很小。

这个过程有点涉及在此处发布,但是我发现实现此目标(并发送邮件)的最简单方法是使用自己的gmail帐户作为传输将postfix设置为中继。

我使用的过程在这里详细介绍:

http://rs20.mine.nu/w/2011/07/gmail-as-relay-host-in-postfix/

无需设置自签名证书(根据sendmail),以我的经验,它确实有效!


0

简单的解决方案不是sendmail,而是sendEmail:

http://caspian.dotconf.net/menu/Software/SendEmail/#download

一个perl脚本,可以轻松配置为通过您可以访问的任何SMTP服务器发送邮件-我一直使用它来通过Gmail帐户发送邮件,但它也适用于端口25等上的基于TCP的普通SMTP。

我通常用我自己的Gmail外壳脚本包装sendEmail perl脚本:

#!/bin/bash

# Send gmail through an account specified in ~/.sendGmailAuthFile (or file identified with -k.)
# The auth file must have values for the -f (from@domain) and -xp (password) options of sendEmail,
# structured as:
#
#    user=me.surnamen@gmail.com
#    pwd=xxxxxxx
#
# We will fill in the rest, and other params are passed through to sendEmail
#
# Example: sendGmail -u "My subject line" -t "test@whatever.com" < message.txt

function sendGmailImmed {
        local authFile="$HOME/.sendGmailAuthFile"
        for arg in "$@"; do
                if [[ "$arg" == "-k" ]]; then
                        shift
                        authFile="$1"
                        shift
                fi
        done
        initAuthFile $authFile
        source $authFile

        sendEmail -f $user -xu $user -xp $pwd -s smtp.gmail.com:587 -o tls=yes "$@"
}

function initAuthFile {
        # If the authfile doesn't exist, we'll create a dummy:
        if [[ ! -f $1 ]]; then
                echo "# sendGmail authentication file: " > $1
                echo "user=my.name@gmail.com" >> $1
                echo "pwd=my-password" >> $1
                echo "A shell auth file has been created as $1"
        fi
}

if [[ -z $sourceMe ]]; then
        sendGmailImmed "$@"
fi
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.