使用smtp-cli创建邮件发送代理主要包括以步骤:首先,确保具备远程电子邮件账户和具备邮件出站功能的VPS。接着,通过git从GitHub克隆smtp-cli脚本,并确保脚本文件具有执行权限。然后,创建一个安全的密码文件来存储你的电子邮件密码,以避免在脚本中明文存储。使用smtp-cli命令发送测试邮件,包括必要的参数如服务器地址、认证信息、发件人和收件人邮箱、邮件主题和附件。最后,可以将这些命令放入bash脚本或cron作业中,实现邮件发送的自动化。在遇到问题时,检查邮件服务器的认证细节、发件人和收件人地址的正确性,以及服务器设置的准确性。这种方法适用于需要无人值守地发送监控更新或日志的场景。
什么是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的 VPS
- 一个cPanel电子邮件帐户
- Putty SSH客户端将用于访问
获取smtp-cli脚本
我们将使用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字段需要是有效的电子邮件地址,或者它永远不会到达目的地。