Bas*_*asj 2 email python exim postfix
我想将所有传入的电子邮件*@example.com
(来自互联网)重定向到我的服务器上运行的 Python 脚本,该脚本将执行各种工作。
example.com
,将其定向到我的服务器apt-get remove postfix
和apt-get remove exim4
,所以我准备开始重新安装其中一个(哪个允许此特定任务的最短解决方案?)将所有传入电子邮件定向*@example.com
到 Python 脚本的主要步骤是 什么?(包括:告诉 MTA 接受来自服务器外部、整个互联网等的电子邮件)
procmail
被Philip Guenther认为有问题(在这种情况下很可能没用,因为.forward
文件或等效物可以将邮件直接发送到您的程序,跳过因此不必要的复杂性procmail
)。
执行摘要:删除procmail端口;该代码不安全,不应用作任何进一步工作的基础。
人们可能知道,早在 1990 年代末到 2001 年,我就是 procmail 的上游维护者。
所以一些其他的解决方案可能是可取的;这取决于邮件传输代理 (MTA)。另一种选择是使用 MTA 传送到本地文件或 IMAP,然后让您的程序解析该文件或 IMAP。这样做的好处是可以继续接受电子邮件并将其保存在某处;当您的程序有问题或无法运行时会发生什么?问题比实时邮件递送少...
可能要么复制 Sendmail.forward
方法,要么弄清楚如何在 Eximese 中正确执行此操作。(我中止了,因为挖掘 Exim 文档需要花费很多时间。)elspy
如果您想以 MILTER 方式进行 SMTP 时间扫描...
天哪,看起来又长又复杂。
在此处设置一个mailertable
条目以将域(以及.domain
子域,如有必要)的所有邮件转发给本地用户jdoe
example.com local:jdoe
.example.com local:jdoe
Run Code Online (Sandbox Code Playgroud)
然后.forward
为该用户设置一个文件来运行必要的代码
$ cat ~jdoe/.forward
"|/etc/smrsh/process"
$
Run Code Online (Sandbox Code Playgroud)
这可能很简单
$ cat /etc/smrsh/process
#!/bin/sh
cat >> /home/jdoe/allmails
$
Run Code Online (Sandbox Code Playgroud)
因为电子邮件是在标准输入上输入的(如果同时process
运行多个实例,这可能会很糟糕;大概您的实际代码处理这种竞争条件或者是幂等的......对吗?)。此方法也适用于复制 Sendmail 转发语法的任何其他 MTA,假设您可以让 MTA 将所有邮件重定向到特定用户。
这假设mailertable
支持已启用、confFORWARD_PATH
已设置、允许 Sendmail 运行代码(smrsh(8)
但请注意,某些供应商可能会在不更新文档的情况下更改目录(运行strings /the/path/to/smrsh | fgrep /
可能会有所帮助))并且诸如 selinux 之类的东西也不会破坏事物。
为Sendmail另一种选择是使用这种MILTER如MIMEDefang和执行任何业务逻辑是有必要的。(各种其他 MTA 支持 MILTER,或者有类似的东西。)
看一下smtpd.conf(5)
(针对 OpenBSD 6.4 的变化进行了更新)
action "mymda" mda "/path/to/your/command" user jdoe
match from any for domain example.com action "mymda"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6722 次 |
最近记录: |