如何使用smtp-cli创建简单邮件发送代理(Linux)

什么是smtp-cli?

更好地了解smtp-cli是什么,让我们谈谈它不是什么;SMTP-CLI不是电子邮件服务器或中继代理;发送高邮件也是不是一种方法。它是一个电子邮件客户端,允许从命令行和脚本发送文本,HTML,文件和图片。

您可以使用SMTP-CLI使用SMTP-CLI通过远程电子邮件帐户从VPS发送更新,以监控运行状况或状态。 您还可以设置CRON作业以将日志转发为服务器安全硬化的一部分。 这允许您的服务器或多或少无人看管,除非找到错误或接近限制。

先决条件

  • 具有您的电子邮件帐户的远程电子邮件服务器
  • 需要邮件出站的VPS
  • Command Line Access to above VPS (via SSH or Get VNC)

建立

  • 1个使用CentOS 7的Hostwinds VPS
  • 一个cPanel电子邮件帐户
  • Putty SSH客户端将用于访问

依存关系

我们将使用git从github中获取smtp-cli脚本。 如果您尚未安装它,则可以将其安装如下:

CentOS / Fedora

# yum install -y git

Ubuntu / Debian

# apt-get install -y git

下载SMTP-CLI存储库

# git clone https://github.com/mludvig/smtp-cli.git

SMTP-CLI脚本(运行的零件)位于名为SMTP-CLI的目录内,而内部是一个名为SMTP-CLI的文件(命令中的-l标志允许我们查看文件属性以确保确保它 可执行文件)。

# ls -l smtp-cli

如果那些"x"是" - ,",则运行此命令以使文件可执行。

# chmod +x smtp-cli/smtp-cli

现在我们可以测试它是否运行。

# smtp-cli/smtp-cli

这应该导致这样的错误

很奇怪会有一个错误,但是由于我们只是在进行测试以确保脚本已下载并可执行,所以这就是我们现在所需要的。

现在,我们将检查全局路径(当我从命令行运行没有完整路径的东西时,VPS将进行检查)

# echo $PATH

并将smtp-cli复制到默认PATH中的用户sbin目录。

# cp smtp-cli/smpt-cli /usr/local/sbin
ls -l /usr/local/sbin/smtp*

现在我们可以从VPS上的任何目录运行SMTP-CLI,而无需担心包括文件的完整路径。

创建电子邮件密码文件

因为将您的未加密密码放在脚本中几乎是最不安全的,更不用说很难,方法来管理密码,我们将创建一个包含我们密码信息的文件。 这使我们能够轻松更新我们的密码,并使恶意演员至少必须寻找信息。

由于我作为root用户运行并创建根cronjob,因此此文件将位于/ root /目录中。 您的Cron作业可能在您的用户CRONTAB中,具体取决于您的系统管理员授予的权限,在这种情况下,您可以在/ home / username中存储它。

# touch /root/.passwd
echo 'SomeRandomPassword' > /root/.passwd

请注意,"somerandompassword"需要是您远程电子邮件帐户的实际电子邮件密码的明文。

使用smtp-cli发送邮件

现在,我们进入了最重要的部分,作为脚本的一部分或从命令行发送电子邮件。我将通过发送作为vnstat指南的一部分创建的文件来测试它。

注意,下面的$(某些命令)部分允许命令内联运行,并将该命令的输出用作自变量的输入。

# smtp-cli --verbose --server mail.emaildomain.TLD:587 --enable-auth --user smtp-cli_guide@emaildomain.TLD --pass $(cat /root/.passwd) --from smtp-cli_guide@emaildomain.TLD --to test2@emaildomain.TLD --subject VPS-stats --attach /var/www/html/vps_bandwidth_stats.png

现在我们知道它可以工作了,我们可以将命令放入bash脚本或cron作业中。

这是bash脚本的代码模板

#!/etc/bash

smtp-cli --verbose --server mailservername.emaildomain.TLD:587 --enable-auth --user login-user@emaildomain.TLD --pass $(cat /root/.passwd) --from email_orinator@emaildomain.TLD --to email_destination@emaildomain.TLD --subject subject-line --attach /full/path/filename.tosend >> /path/to/logfile.log

这是发送的电子邮件

其他一些有用的smtp-cli参数

--help
--body-plain=<text|filename>
--body-html=<text|filename>

尽管此示例提供了设置脚本或cronjobs的功能,但该简单的邮件程序还可以使用全局变量或其他监视脚本的输出发送邮件。所有这些工具都可以根据定期间隔或触发事件向您的电子邮件发送简单的警报或复杂的诊断数据。

故障排除

使用脚本时可能会出现几个不同的问题。 第一个问题将是您的邮件服务器的身份验证。 您是否输入了完整的电子邮件地址或只是用户名? 这就是在用户参数后所需的内容。 该示例假定您输入完整的电子邮件地址作为-User。 使用您通常为服务器使用的凭据使用的凭据。

第二个问题领域是–from字段。确保这是您要登录的电子邮件帐户。您无法通过不受控制的帐户发送邮件。

第三是-server字段的服务器名称和端口选择。 此名称应该是您的外发电子邮件服务器的完全限定域名,后跟A:portNumber。 SMTP的标准端口为25,587,465。

最后,-to字段需要是有效的电子邮件地址,或者它永远不会到达目的地。

17

发表回复