AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 79899
Accepted
privatehuff
privatehuff
Asked: 2009-10-31 07:03:29 +0800 CST2009-10-31 07:03:29 +0800 CST 2009-10-31 07:03:29 +0800 CST

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

  • 772

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

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

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

我拥有几个网站域(并且有一个托管包)。通过填写 smtp.mydotcom.com 供外发服务器使用并更改端口等以匹配我网站的 cpanel 配置页面中的信息,我已经能够设置 Thunderbird 等应用程序,以使用我网站上的一个帐户发送邮件. 有没有办法做类似的事情,所以我可以从我的文件服务器发送一封电子邮件到我的外部电子邮件?

编辑:这是我在阅读下面丹尼斯威廉姆森的回答后采取的步骤。我只用了几分钟就启动并运行了!

安装 esmtp:

sudo apt-get install esmtp

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

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

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

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

收件人:我 <[email protected]>
发件人:警报 <[email protected]>
主题:主题

邮件正文

因此,为了关闭邮件,可以使用以下命令:

cat eheader <file1> <file2> ... <fileN> | /usr/bin/esmtp -t

因此,很容易改变为每日/每周/等作业发送哪些文件。

linux
  • 7 7 个回答
  • 6082 Views

7 个回答

  • Voted
  1. Best Answer
    Dennis Williamson
    2009-10-31T08:12:00+08:002009-10-31T08:12:00+08:00

    为此,我使用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 设置它的说明在这里。

    • 4
  2. David Z
    2009-10-31T07:30:15+08:002009-10-31T07:30:15+08:00

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

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

    • 2
  3. Swoogan
    2009-10-31T08:27:38+08:002009-10-31T08:27:38+08:00

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

    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 crontab和man cron

    另一个更新:

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

    • 2
  4. labradort
    2009-10-31T07:58:11+08:002009-10-31T07:58:11+08:00

    您想发送邮件,但不配置邮件服务器。不是一个艰难的命令,但很奇怪。Postfix 可以设置为在几秒钟内发送电子邮件,并且将正常的电子邮件发送到 root 通常很有用,例如 MD raid 组件失败的通知。

    如果您不能或不会在该系统上设置电子邮件,我们还剩下什么?

    如果您的服务器或 Web 托管站点之一确实有 ssh,并且可能已经配置了邮件服务,那么一个 cron 会如何,它 scp 来自服务器的日志文件并从有邮件的系统发送它?邮件通常使用 mail 或 mailx 命令从 unix 发送。

    mailx -s "the subject line" [email protected] < filetomail.txt
    

    在此之前,您可以将您想要报告的内容与您需要执行的任何脚本或 cp 命令一起放入该文件中。如果它工作得更好,您可以将 cron 放在 Ubuntu 服务器上,并让它向第二台服务器发出 ssh 命令,以将数据拉下来并邮寄。

    • 1
  5. charlesbridge
    2009-10-31T10:51:01+08:002009-10-31T10:51:01+08:00

    我使用带有Mail::Sendmail的 perl 脚本从我的服务器发送报告(和 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;
    
    • 1
  6. lexsys
    2009-10-31T07:08:04+08:002009-10-31T07:08:04+08:00
    cat /var/log/file.log | mail -s "File logs" [email protected]
    

    尝试这个。它将适用于大多数开箱即用的 Linux 发行版。

    • -1
  7. simplr
    2009-10-31T07:54:11+08:002009-10-31T07:54:11+08:00

    试试笨蛋。这是一个非常通用的。允许使用命令行,包括发送附件的能力。Mutt 默认安装在 Ubuntu 服务器中。所以你应该拥有它。典型的命令行如下所示:

    mutt -s 'The subject' -i message.txt [email protected] &
    

    有关完整的使用选项,请参见“man mutt”。如果您只是在终端中输入“mutt”,它还具有交互模式。

    • -1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve