问题标签 [milter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
640 浏览

perl - 在执行 Postfix before-queue (perl) milter 期间获取队列 ID

问题:

尝试为 Postfix 编写一个 milter,以将电子邮件中某些标头的存在与出站中继主机的目标 IP 地址和 TCP 端口联系起来。

按照 Postfix milter 指南,我似乎需要实现一个before-queuemilter。

使用Sendmail::Milter perl 模块这样做。

除了将被中继到的最终目的地(IP 和端口)之外,我可以在标题、信封等中获取我需要的所有内容。显然,这对milter来说是有意义的。before-queue

从哪里获取中继信息?

查看我们的 Postfix 日志,我可以看到以下格式的消息:

一些日志行有我正在寻找的中继信息,即:

那正是我正在寻找的ADDRPORTXXXXXXXXXX似乎在日志中将它们联系在一起。我被引导相信这被称为“队列 ID”或“作业 ID”,具体取决于您在说什么。

如果我可以XXXXXXXXXX从 milter 中获得该队列/作业 ID,那么将日志捆绑在一起就没有问题了。

试过了吗?

看起来我可以通过$ctx->getsymval SYMNAME从回调中调用来获取一些供应商特定的信息。

milter 指南有如下代码来获取“队列 ID”:

我只是不知道我是否可以通过getsymval(以及SYMNAME可能是什么)或通过其他一些上下文方法获得该 jobid。

有任何想法吗?

0 投票
0 回答
382 浏览

gmail - 无法从 postfix 向 gmail 帐户发送电子邮件

我在 gmail 帐户中发送电子邮件时遇到问题。我在队列中看到他们,但他们没有处理。查看日志,我注意到当我尝试发送到 gmail 时,我收到以下信息:

0 投票
1 回答
72 浏览

c - milter 回调真的需要重入吗?

我需要为 Sendmail 开发一个 milter,并且考虑了很长时间我应该使用哪种语言/框架。最后,我决定直接使用 milter API 用纯 C 语言来完成。

我研究了 milter API 文档并认为我已经掌握了这些概念。但是有一件事情让我非常担心。从本节开始:

单个过滤器进程可以同时处理任意数量的连接。因此,所有过滤回调必须是可重入的,并使用一些适当的外部同步方法来访问全局数据 [...]。

虽然我非常理解为什么回调必须是线程安全的,但我不明白为什么它们必须是可重入的。我无法想象这些回调可以从中断或信号处理程序中调用(也许除了中止回调,我将不得不重新阅读这个)。

可重入要求的问题在于,可重入函数不能调用不可重入代码。因此,如果回调真的必须是可重入的,我就无法使用malloc()其中的大多数其他库函数;来自man 3 malloc

为了避免多线程应用程序中的损坏,在内部使用互斥锁来保护这些函数使用的内存管理数据结构 [...]

这肯定意味着它malloc()是线程安全的,它可能意味着它malloc()不是可重入的,因此没有使用它的函数。

所以我有两个问题:

1) milter 回调是否真的需要重新进入,或者这实际上是 milter API 文档中“需要线程安全”的一个非常奇怪的措辞?

2)如果他们真的需要重入,我该如何规避上面提到的问题?由于 milter API 的特性,我很难想象如何在不使用malloc()和其他不可重入库函数的情况下在回调中做一些合理的事情。

0 投票
1 回答
46 浏览

authentication - 后缀:Milter 被通知客户端身份验证失败?

有什么方法可以告诉后缀下的 milter 给定的客户端连接尝试因身份验证错误而失败?

有时,我的电子邮件服务器会受到来自同一客户端的重复 SMTP 身份验证尝试的冲击,大概是为了试图突破我的安全性。我正在运行一个 milter,这些尝试显示为一个 CONNECT,后跟一个 CLOSE,在我的 postfix 日志中显示一条错误消息,其中包含如下信息:

我想使用我的 milter 来跟踪这些身份验证失败,但我不知道 milter 是否有可能通过 postfix 通知连接失败是专门由于身份验证失败造成的。

我可以抓取我的 postfix 日志来查找这些故障,但如果可能的话,我更愿意通过我的 milter 跟踪它们。

有没有办法用后缀 milter 做到这一点?

先感谢您。

0 投票
1 回答
166 浏览

smtp - 后缀:客户端响应在 milter 和队列后处理中的时间?

我目前正在使用 postfix-2.11.3,并且正在通过 milter 进行大量消息处理。此处理发生在通知客户端消息已被接受之前,并且有时会涉及足够的工作以延迟客户端接收初始 SMTP250 2.0.0 Ok: queued as xxxxxxxxxxx消息。

在向我的服务器发送大量电子邮件期间,此 milter 处理可能会导致积压,并且在某些情况下,客户端连接在等待初始250 ...消息时会超时。

我的问题是这样的:如果我将我的 milter 重写为一个没有队列前处理的 postfix after-queue 过滤器,客户端是否确实会250立即收到初始消息,而后续的 SMTP 消息可能会稍后出现?或者250消息是否仍会延迟到 postfix 完成队列后过滤之后?

如果队列后过滤器决定随后拒绝该消息,那么客户端是否有可能250接收到初始消息,以及随后由同一客户端接收和处理4xx的消息?5xx

我知道我可以通过编写一个队列后过滤器来测试它。但是,我的电子邮件服务器很忙,我没有可用的测试服务器,所以我想提前知道队列后过滤器是否可以以这种方式运行。

感谢您对此分享的任何智慧。

0 投票
1 回答
311 浏览

python - 是否可以使用 imap 修改电子邮件的消息?

是否可以在收到的电子邮件上添加弹出消息?

我已经搜索过 IMAP 但它只能获取电子邮件、查看电子邮件内容。我考虑过 milter,但它只用于过滤。我的想法是,当电子邮件上下文中有 URL 时,我可以显示一条警告消息,告诉用户它是否是网络钓鱼 URL。无论我使用什么电子邮件客户端,我都想让警告消息可用。

0 投票
0 回答
41 浏览

python - E1101:模块“Milter”没有“CONTINUE”成员(无成员)

我决定通过运行一些已知的工作代码来提高我的代码质量pylint。特别是我有一个使用pymilter. 这是我正在运行的非常简单的代码:

这是输出pylint -E

我看了高低,根本不明白为什么pylint给我这个输出。我不想告诉它忽略这个特定规则,因为它实际上是大多数时候非常有用的规则。有任何想法吗?

0 投票
0 回答
905 浏览

postfix-mta - 在 Postfix 中进行 ARC 签名/验证

我已经使用 Backports 将我的 Postfix 邮件系统从 opendkim 升级到 Debian Stretch 中的 dkimpy,因为我正在尝试实现 ARC 签名和验证。到目前为止,我能够让 dkimpy 工作,在入站邮件上完成了 DKIM 验证,但无法让 DKIM 签名工作,并且在 dkimpy 中几乎没有找到关于 ARC 的信息/文档。任何帮助,将不胜感激。我的配置如下。

0 投票
1 回答
20 浏览

email - 在 Sendmail Jilter 中,JilterConstants 中提到的各种缩写是什么意思

在 Sendmail Jilter 中,JilterConstants 中提到的各种缩写是什么意思?比如: SMFIC_HEADERSMFIR_CHGHEADER

官方文档没有关于类的任何详细信息JilterConstants

http://sendmail-jilter.sourceforge.net/apidocs/index.html

但是我能够找到每个标志的用途:

https://github.com/tachtler/jilter-InfoMilter/blob/master/com/sendmail/jilter/JilterConstants.java

但我对这些标志的完整形式感兴趣。

因为SMFIC_HEADER我认为它可能意味着“发送邮件标志......”但我正在寻找官方参考。谢谢。

0 投票
1 回答
39 浏览

email - 不希望 Postfix+Dovecot 拒绝“找不到收件人”邮件

我正在为 Postfix 编写一个 Milter,它处理带有虚拟域和用户的服务器(Postfix+Dovecot)中的传入消息。通信 betweend Postfix 和 Milter 使用 Sendmail Milter Protocol V 2 完成

我真的需要 Dovecot(以及由此产生的 Postfix)不会拒绝收件人无效的邮件,因为我需要 Milter 来执行此检查(并拒绝接受)。

这是必需的,因为我正在编写 PEC 邮件服务器(Pec 代表 Posta Elettronica Certificata,这是意大利认证邮件的实现)。

当收到收件人不正确的邮件时,我需要以电子邮件的形式出示特定的收据。

但是在这种情况下,Postfix(由 dovecot 告知)在将邮件发送到 Milter 之前会拒绝该邮件。

我试图在文档中搜索这个,但无法找到这个特定的需求。

我已附加 PostFix 配置....

和鸽舍配置