从 Linux 文件服务器接收电子邮件警报

从 Linux 文件服务器接收电子邮件警报

目标:将文件服务器上的文本文件放入我的 Gmail 收件箱中。

文件服务器正在运行 Ubuntu Server 8.04,我目前不时通过 SSH 进入它并检查日志、硬盘的 SMART 统计信息等。我正在研究设置一个计划脚本,该脚本运行一些命令并通过电子邮件将输出发送给我。

我遇到的唯一问题是实际发送电子邮件。我没有在 Linux 下配置电子邮件的经验,所有指向 sendmail 的指南似乎都代表我自己和我当前的配置假设了很多事情。服务器设置为与 samba 共享文件,而不是作为邮件、Web 或 DNS 服务器。我不想运行邮件服务器或从服务器路由任何内容或在服务器上(或使用服务器)接收任何邮件,除非这些有助于我实现目标。文件服务器在我们的正常网络上并且可以访问互联网。

我拥有多个网站域名(并拥有托管包)。我能够设置像 thunderbird 这样的应用程序,使用我网站上的一个帐户发送邮件,方法是填写 smtp.mydotcom.com 作为发送服务器,并更改端口等以匹配我网站的 cpanel 配置页面中的信息。有没有办法做类似的事情,以便我可以将电子邮件从我的文件服务器发送到我的外部电子邮件?

编辑:以下是我阅读 Dennis Williamson 的回答后采取的步骤。我只用了几分钟就启动并运行了!

安装 esmtp:

sudo apt-get 安装 esmtp

我在我的网站上创建了一个新的电子邮件帐户(称为“alerts”),并像这样编辑了 /etc/esmtprc:

主机名=mail.mydomain.com:26
用户名=alerts+mydomain.com

(这些值由 cpanel 管理页面提供)

然后我创建了一个名为“eheader”的文件,其中包含电子邮件的默认顶部:

收件人:我 <[电子邮件保护]>
来自:警报 <[电子邮件保护]>
主题:主题

邮件正文

因此,为了发送邮件,可以使用以下命令:

cat eheader <文件1> <文件2> ... <文件N> | /usr/bin/esmtp -t

因此,可以轻松改变为每日/每周/等作业发送的文件。

答案1

我用esmtp,这是一个仅用于发送的 MTA,用于此目的。它的设置非常简单。它具有与 sendmail 兼容的命令行选项(一些被忽略)。它在存储库中。

这是一个简单的例子:

echo -e "To: Recipient Name <[email protected]>\n\
    From: Me Myself and I <[email protected]>\n\
    Subject: Here is the example I promised\n\n\
    $(<somefile)" | /usr/bin/esmtp -t

这将发送名为“somefile”的文件的内容。

有一个非常简单的配置文件,/etc/esmtprc其中包含上游电子邮件提供商的主机名、用户名和密码(我假设您的是 gmail)。

Gmail 的设置说明如下这里

答案2

查看 ssmtp,它是 sendmail 的替代品,它只会将电子邮件发送到您为其配置的 SMTP 服务器。这可能是您以编程方式发送电子邮件的最简单方法之一。在网上搜索“ssmtp”应该会找到大量有关如何配置它的教程和说明。

此外,大多数编程/脚本语言都有可用的 SMTP 库,因此如果您熟悉 Perl 或 Python,您可以编写一个连接到 SMTP 服务器的小脚本来发送邮件 - 基本上您将编写自己的更简单的 ssmtp 版本。

答案3

您需要做的是在 Ubuntu 机器上设置一个 SMTP 服务器,该服务器配置为转发到真正的 SMTP 服务器(在您的网络或 ISP 上),例如 ssmtp 或 esmtp。以下是轻量级服务器的列表(mutt 文档):

http://wiki.mutt.org/?LightSMTPagents

更新:

由于您正在运行 Ubuntu,因此您将安装 Exim。

您可以使用 来配置它sudo dpkg-reconfigure exim4-config。只要您阅读了一些文档,就可以很容易地设置中继邮件。

/更新

以下是从任何电子邮件客户端程序通过 Gmail 发送邮件的 Gmail SMTP 服务器设置:

  • 设置Gmail SMTP服务器地址:smtp.gmail.com
  • 将 Gmail SMTP 用户名配置为:您的完整 Gmail 地址(包括 @gmail.com)Google Apps 用户可能必须输入 username@your_domain.com
  • 将 Gmail SMTP 密码配置为:您的 Gmail 密码
  • 将 Gmail SMTP 端口配置为:465 或 587
  • 配置 Gmail SMTP TLS/SSL 要求为:是

最后,您将编写一个脚本来调用命令行邮件客户端,如 mutt(我不相信 mail 或 mailx 可以添加附件)。您也可以使用 Perl 或 Python 的邮件 API。该脚本会创建一封电子邮件并附加您想要的文件。

最后,您需要在 crontab 中放入一个每天运行一次的脚本条目(或者按照您想要的任何间隔运行):

01 * * * * root echo "This command is run at one min past every hour"
17 8 * * * root echo "This command is run daily at 8:17 am"
17 20 * * * root echo "This command is run daily at 8:17 pm"
00 4 * * 0 root echo "This command is run at 4 am every Sunday"
* 4 * * Sun root echo "So is this"
42 4 1 * * root echo "This command is run 4:42 am every 1st of the month"
01 * 19 07 * root echo "This command is run hourly on the 19th of July"

查看man crontabman cron

另一更新:

您可以使用命令行发送电子邮件发电子邮件

答案4

我使用 perl 脚本邮件::Sendmail通过电子邮件从我的服务器发送报告(并使用 Net::Twitter 发送状态更新)。当然,这意味着要处理 CPAN,这可能不值得,因为您必须处理make软件包。

!#/usr/bin/perl 
use Mail::Sendmail;

%mail = ( To      => '[email protected]',
        From    => '[email protected]',
        Message => "This is a very short message"
       );

sendmail(%mail) or die $Mail::Sendmail::error;

print "OK. Log says:\n", $Mail::Sendmail::log;

相关内容