你好,我需要实现通过电子邮件向用户发送提醒的服务,这应该是多线程调度系统,这部分没问题,但我需要在服务器上安装和配置 smtp 服务器以发送电子邮件,这是我不知道该怎么做以及会有什么结果我的工具会是某些 Linux(我猜是 ubuntu)切片上的 lamp combo。
答案1
安装非常特定于发行版,因为有发行版推荐的安装软件方式。如今,我很少建议任何人在任何 Linux 发行版上通过源代码安装 Postfix。
对于 ubuntu,使用 apt-get。
$ sudo apt-get install postfix
这将在您的 Ubuntu 服务器上安装 postfix,之后的配置将由您完成。我的建议是将邮件传输到 sendmail 二进制文件(通常位于 /usr/sbin/sendmail),如果 Postfix 系统关闭,它将把邮件保存在队列中。如果您使用 SMTP 并连接到端口 25,如果您的邮件服务器需要关闭进行维护,您的应用程序将需要保存自己的邮件队列,否则可能会有邮件无法送达的风险。
答案2
安装 Postfix,按照Postfix 网站
答案3
您还可以安装 exim4,虽然设置起来更加复杂(由于 debian 的黑客行为),但设置转发邮件要容易得多。只需 apt-get install exim4,然后,如果需要,dpkg-reconfigure exim4-config。
答案4
如果您曾经从源代码构建/编译过代码,那么从源代码出发构建 Postfix 并不难。
我们使用 mailx 发送电子邮件,并且 mailx 与 postfix SMTP 服务器对话作为实际的中继点。
此外,一旦您启动并运行 Postfix 服务器,其他外部服务器就可以参考它来中继电子邮件。
我们使用脚本构建过程在我们的 Linux 发行版(Pozix Linux)上构建 Postfix。
这是我们用来构建 Postfix 文件的命令:
制作 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,因此我们需要在 root 的主目录中放置一个名为“.mailrc”的文件。
.mailrc 的内容如下:
放[电子邮件保护] 设置 smtp=mail.mydomain.com 设置[电子邮件保护] 设置 smtp-auth 密码 = 警报密码 设置 smtp-auth = 登录
然后在我们的脚本中我们像这样调用 mailx:
echo“测试消息”| mailx“[电子邮件保护] [电子邮件保护]“-s“电子邮件主题”“电子邮件正文”
或者你可以这样做:
mailx -s“主题”-a /路径/到/某些/文件[电子邮件保护]
其中 -a 允许您附加文件,而 test.msg 是读入电子邮件正文的外部文件。
或者另一种方法,类似于首先使用文件附件,方法是:
echo“消息正文”| mailx -s“主题”-a /path/to/some/file[电子邮件保护]