大家好,我需要实现通过电子邮件发送用户提醒的服务,这应该是多线程调度系统,这部分很好,但我需要安装和配置 smtp 服务器以在服务器上发送电子邮件,这是我不知道如何做什么和期望什么我的工具将是一些 Linux(我猜是 ubuntu)切片上的灯组合。
大家好,我需要实现通过电子邮件发送用户提醒的服务,这应该是多线程调度系统,这部分很好,但我需要安装和配置 smtp 服务器以在服务器上发送电子邮件,这是我不知道如何做什么和期望什么我的工具将是一些 Linux(我猜是 ubuntu)切片上的灯组合。
安装是非常特定于发行版的,因为有发行版推荐的软件安装方式。这些天来,我很少推荐任何人在任何 Linux 发行版上通过源代码安装 Postfix。
对于 ubuntu,使用 apt-get。
这将在你的 Ubuntu 服务器上安装 postfix,之后的配置留给你。我的建议是将邮件通过管道传送到 sendmail 二进制文件(通常位于 /usr/sbin/sendmail),如果 Postfix 系统停机,它将把邮件保存在一个队列中。如果您使用 SMTP 并连接到端口 25,如果您的邮件服务器需要关闭以进行某些维护,您的应用程序将需要保留它自己的邮件队列,否则可能会导致邮件无法传递。
按照Postfix.org上的说明安装 Postfix
您还可以安装 exim4,虽然对于困难的设置(由于 debian 的hackery)更复杂,但设置转发邮件要容易得多。只需 apt-get install exim4,然后,如有必要,请 dpkg-reconfigure exim4-config。
就我个人而言,我会说仔细考虑你看到它的发展方向。如果它只是代表网络服务器喷出奇怪的邮件 - 使用 Sendmail / Postfix。如果要处理入站电子邮件和用户,以及由此带来的所有复杂性——我会考虑 exim4。后者为您带来一大堆灵活性,默认情况下的数据库选项以及完成 SMTP 事务之前的病毒/垃圾邮件扫描。哦,是的 - 设置起来很痛苦 - 但一旦排序 - 甜蜜。
如果您以前曾经从源代码构建/编译过代码,那么从源代码中站起来并不难。
我们使用 mailx 向外发送电子邮件,并使用 mailx 与实际中继点的 postfix SMTP 服务器进行通信。
此外,一旦您启动并运行了 Postfix 服务器,其他外部服务器就可以引用它进行电子邮件中继。
我们使用脚本构建过程在我们的 Linux 发行版(Pozix Linux)上构建 Postfix。
这是我们用来构建 Postfix make 文件的命令:
制作 makefile 'CCARGS=-DHAS_PGSQL -DUSE_TLS -I/usr/local/pgsql-8.2.13/include -DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I/usr/include/sasl -I/usr/local/BerkeleyDB/include' 'AUXLIBS=- L/usr/local/lib -L/usr/local/pgsql-8.2.13/lib -L/usr/local/BerkeleyDB/lib -lpq -lsasl2 -lz -lm -lssl -lcrypto -lpthread'
您可以根据自己的需要进行调整。由于我们使用 PostgreSQL,我们有: -L/usr/local/pgsql-8.2.13/lib -lpq
如果您不需要 PostgreSQL 支持,您可以消除这些;SASL 和 TLS 也是如此。
该命令执行后,
make install(新安装) make upgrade(升级以前的版本)
为了使 mailx 工作,我们通常有一个以 root 身份调用脚本的 CRON 作业。
反过来,该脚本调用 mailx。
MAILX 使用 .rc 文件来读取环境变量,并且由于我们以 root 用户身份调用 mailx,我们需要将一个名为“.mailrc”的文件放在 root 的主目录中。
.mailrc 的内容如下所示:
设置从[email protected] 设置 smtp=mail.mydomain.com 设置 [email protected] 设置 smtp-auth-password=alertspassword 设置 smtp-auth=login
然后在我们的脚本中,我们像这样调用 mailx:
echo "测试信息" | mailx "[email protected] [email protected]" -s "电子邮件主题" "电子邮件正文"
或者你可以这样做:
mailx -s "主题" -a /path/to/some/file [email protected]
其中 -a 允许您附加文件,而 test.msg 是要读入电子邮件正文的外部文件。
或另一种方式,类似于首先使用文件附件,是:
echo "邮件正文" | mailx -s "主题" -a /path/to/some/file [email protected]