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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 536766
Accepted
Clonkex
Clonkex
Asked: 2014-10-14 16:03:24 +0800 CST2014-10-14 16:03:24 +0800 CST 2014-10-14 16:03:24 +0800 CST

如何让 crontab 给我发电子邮件输出?

  • 772

我怎样才能让 crontab 把它的工作输出通过电子邮件发送给我?我有[email protected]上面的工作,但它不起作用。

我知道我需要使用诸如 Postfix 或 Sendmail 之类的东西,但对于我来说,我无法找到如何实现这一点。我搜索并搜索了有关设置 Postfix 的简单指南,但它们都非常复杂,并且希望您设置整个服务器来发送和接收电子邮件并了解所有术语(例如,什么是域名外发电子邮件?)。

我只想让 crontab 给我发电子邮件。为什么这么难??

附加信息:

我的 crontab 文件如下所示:

[email protected]
1 0 * * * ~/Desktop/toskymesh.sh
59 6 * * * ~/Desktop/tooptus.sh
0 3 * * * snapraid sync

更多附加信息:

的输出ps -ef | grep '[s]endmail'

root 6840 1370 0 10:26 ? 00:00:00 sendmail: MTA: accepting connections

我确定 cron 正在工作,但我正在测试邮件命令echo Test | mail -s Test [email protected]。

email
  • 6 6 个回答
  • 161136 Views

6 个回答

  • Voted
  1. Best Answer
    Clonkex
    2014-10-15T04:23:24+08:002014-10-15T04:23:24+08:00

    最后我用了sSMTP。它比 eitherPostfix或 or简单得多sendmail,而且工作做得很好。

    为了将来参考,以下是如何将 sSMTP 与 Yahoo Mail 一起使用(别担心,它比看起来要简单得多):

    • 使用您的包管理器下载 ssmtp。我使用了 Synaptic,但sudo apt-get install ssmtp应该也能正常工作。

    • 打开配置文件在/etc/ssmtp/ssmtp.conf.

    • 使配置看起来像这样:

      [email protected]       <--- Use your real email here
      mailhub=smtp.mail.yahoo.com:587       <--- This will depend on your email provider
      FromLineOverride=YES
      UseSTARTTLS=YES
      [email protected]   <--- Use your real email here
      AuthPass=yourRealYahooPassword        <--- Use your real email password here
      TLS_CA_File=~/cert.pem
      
    • 使用 OpenSSL 创建 cert.pem 文件。我使用openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 9999 -nodes了(更多信息,请参见如何使用 OpenSSL 创建自签名证书)。你可以把文件贴在任何地方,但我只是把它放在 ~/. 无论你把它放在哪里,确保你将TLS_CA_File=ssmtp.conf 中的行指向正确的位置。

    • 打开文件/etc/ssmtp/revaliases并添加行(用您的详细信息替换相应的部分):

      yourPCUsername:[email protected]:smtp.mail.yahoo.com:587
      

      如果您以 root 身份运行,我假设您需要添加另一行,用“root”替换您的名字。

    • 就是这样,你很高兴去!要进行测试,最简单的方法 (IMO) 是创建一个包含以下内容的文件:

      To: [email protected]                       <--- Use your real email here...
      From: "whateverYaWant" <[email protected]>  <--- ...and here
      Subject: Some Notifying Email
      MIME-Version: 1.0
      Content-Type: text/plain
      
      Body of your email goes here. Hello world!
      
    • 通过运行检查您是否没有安装真正的sendmailsendmail -V。它应该说“sSMTP”。

    • 最后,运行cat fileWithEmailInIt.txt | sendmail -i -t,然后等待几秒钟 (10-30) 并检查您的电子邮件!

    附加说明 1:如果您在使用 Gmail 时遇到问题,请尝试此答案的选项 1 。
    (感谢Ben Creasy!)

    附加说明 2:如果邮件是从命令行而不是通过 crontab 发送的,请尝试更改FromLineOverride为NOin /etc/ssmtp/ssmtp.conf。您还可以通过添加Debug=YES到ssmtp.conf- 额外的日志记录到 来获得更详细的日志记录/var/log/mail.log。
    (感谢Jakub Kukul!)

    • 50
  2. Oli
    2014-10-15T00:16:05+08:002014-10-15T00:16:05+08:00

    安装后缀。它比大多数其他包更复杂,但仍然不复杂。

    sudo apt-get install postfix
    

    选择“Internet 站点”,然后接受所有默认值。然后我们只需要停止外部连接,把它变成一个“空客户端”。运行:sudoedit /etc/postfix/main.cf并找到inet_interfaces设置(接近尾声)并将其更改为loopback-only,如下所示:

    inet_interfaces = loopback-only
    

    最后重新启动 Postfix sudo /etc/init.d/postfix restart(重新加载不会)。

    您现在安装了一个 Postfix,它不会为外部机器中继电子邮件,它只会接受 127.0.0.1(对于 IPv6 为 ::1)的连接。


    另外,您的 cron 行可能无法正常工作,因为您使用的是非相对路径和包含 Bash 替换的路径。sh不理解~并且它可能没有正确的PATH设置。所以将它们替换为(我只是在猜测实际路径):

    1 0 * * *   /home/clonkex/Desktop/toskymesh.sh
    59 6 * * *  /home/clonkex/Desktop/tooptus.sh
    0 3 * * *   /usr/bin/snapraid sync
    

    如果您的脚本需要从特定目录运行,请确保它们cd位于正确的目录中。不要假设它cron会在正确的位置,因为它可能不会。

    • 18
  3. Oh Ar
    2015-09-12T09:06:09+08:002015-09-12T09:06:09+08:00

    我在 exim4 上运气很好。

    sudo apt-get install alpine exim4 mailutils eximon4 spf-tools-perl swaks
    

    (alpine 只是我喜欢使用的邮件客户端)

    在那之后,我跑了

    sudo dpkg-reconfigure exim4-config
    

    并按照提示进行操作。此页面:https ://help.ubuntu.com/community/Exim4也非常有帮助。我花了大约 10 分钟才让它运行起来。

    • 3
  4. x-yuri
    2021-07-06T08:13:03+08:002021-07-06T08:13:03+08:00

    如果您不想要电子邮件通知,但想在某处记录 cron 作业的输出以便在需要时能够检查它:

    # apt install postfix
    

    当询问邮件服务器配置类型时,选择“仅限本地”。

    确认cron就​​能发送邮件:

    # apt install mailutils
    # echo test body | mail -s 'test subject' root
    # cat /var/mail/root
    

    或者添加一个cron工作:

    * * * * * date
    

    等待它运行(journalctl -ef或watch date),然后cat /var/mail/root。

    • 3
  5. duli
    2018-06-02T20:27:26+08:002018-06-02T20:27:26+08:00

    来自 sSMTP 联机帮助页:“它不执行别名,这必须在用户代理或邮件中心上完成。它也不尊重 .forwards,这必须在接收主机上完成。它尤其不会传送到管道。 “

    所以,如果你想在你的外部电子邮件中接收所有发送到 root 的消息,使用 sSMTP 是个坏主意,因为它不支持别名。

    相反,您可以使用 postfix。还是很简单的。以下是如何将它与 gmail 一起用作发送邮件的 smtp:

    sudo apt-get install postfix mailutils
    

    一般邮件配置类型:卫星系统

    系统邮件名称:邮件服务器的首选完全限定名称,例如mail.example.com

    SMTP 中继主机(空白表示无):[smtp.gmail.com]:587

    添加到/etc/postfix/main.cf:

    smtp_use_tls = yes
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
    smtp_sasl_security_options = noanonymous
    smtp_sasl_tls_security_options = noanonymous
    

    创建 /etc/postfix/sasl/sasl_passwd

    [smtp.gmail.com]:587 [email protected]:password
    

    然后:

    sudo postmap /etc/postfix/sasl/sasl_passwd
    sudo chown -R root:postfix /etc/postfix/sasl
    sudo chmod 750 /etc/postfix/sasl
    sudo chmod 640 /etc/postfix/sasl/sasl_passwd*
    

    编辑 /etc/aliases 并添加:

    root: [email protected]
    

    最后,运行:

    sudo newaliases
    sudo systemctl stop postfix.service
    sudo systemctl start postfix.service
    

    现在,您可以测试重定向是否有效:

    echo "Test to root." | mail -s "Test message to root" root
    

    希望能帮助到你。

    • 2
  6. WinEunuuchs2Unix
    2020-07-21T03:55:15+08:002020-07-21T03:55:15+08:00

    我使用了一种非常简单的方法来cron发送电子邮件:将Linux 配置、脚本和文档备份到 Gmail。

    自动发送电子邮件的最简单方法

    从使用 ssmtp 发送电子邮件警报中,我们找到了从终端或脚本自动发送电子邮件的最简单方法。安装步骤很简单:

    sudo apt install ssmtp
    sudo nano /etc/ssmtp/ssmtp.conf
    # Change "MyEmailAddress" and "MyPassword" to your own.
    

    有一个步骤没有提到;Google 将向您发送一封电子邮件,确认您希望允许“安全性较低”的应用程序使用您的帐户发送邮件:

    gmail 为电子邮件打开安全性较低的应用程序

    有收到太多邮件的烦恼。例如,每次您输入错误的sudo密码时,您都会收到一封电子邮件:Stop email me bad sudo password attempts

    • 1

相关问题

  • 如何让 Evolution 自动应用过滤器?

  • 电脑残障人士的电邮申请

  • 在 Kmail 中配置 GPG

  • 如何在不保持主 UI 打开的情况下进行 Evolution 检查并通知新电子邮件?[关闭]

  • 如何配置邮件服务器以报告与服务器名称不同的主机名[关闭]

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve