问题标签 [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.
perl - 在执行 Postfix before-queue (perl) milter 期间获取队列 ID
问题:
尝试为 Postfix 编写一个 milter,以将电子邮件中某些标头的存在与出站中继主机的目标 IP 地址和 TCP 端口联系起来。
按照 Postfix milter 指南,我似乎需要实现一个before-queue
milter。
使用Sendmail::Milter perl 模块这样做。
除了将被中继到的最终目的地(IP 和端口)之外,我可以在标题、信封等中获取我需要的所有内容。显然,这对milter来说是有意义的。before-queue
从哪里获取中继信息?
查看我们的 Postfix 日志,我可以看到以下格式的消息:
一些日志行有我正在寻找的中继信息,即:
那正是我正在寻找的ADDR
。PORT
这XXXXXXXXXX
似乎在日志中将它们联系在一起。我被引导相信这被称为“队列 ID”或“作业 ID”,具体取决于您在说什么。
如果我可以XXXXXXXXXX
从 milter 中获得该队列/作业 ID,那么将日志捆绑在一起就没有问题了。
试过了吗?
看起来我可以通过$ctx->getsymval SYMNAME
从回调中调用来获取一些供应商特定的信息。
milter 指南有如下代码来获取“队列 ID”:
我只是不知道我是否可以通过getsymval
(以及SYMNAME
可能是什么)或通过其他一些上下文方法获得该 jobid。
有任何想法吗?
gmail - 无法从 postfix 向 gmail 帐户发送电子邮件
我在 gmail 帐户中发送电子邮件时遇到问题。我在队列中看到他们,但他们没有处理。查看日志,我注意到当我尝试发送到 gmail 时,我收到以下信息:
c - milter 回调真的需要重入吗?
我需要为 Sendmail 开发一个 milter,并且考虑了很长时间我应该使用哪种语言/框架。最后,我决定直接使用 milter API 用纯 C 语言来完成。
我研究了 milter API 文档并认为我已经掌握了这些概念。但是有一件事情让我非常担心。从本节开始:
单个过滤器进程可以同时处理任意数量的连接。因此,所有过滤回调必须是可重入的,并使用一些适当的外部同步方法来访问全局数据 [...]。
虽然我非常理解为什么回调必须是线程安全的,但我不明白为什么它们必须是可重入的。我无法想象这些回调可以从中断或信号处理程序中调用(也许除了中止回调,我将不得不重新阅读这个)。
可重入要求的问题在于,可重入函数不能调用不可重入代码。因此,如果回调真的必须是可重入的,我就无法使用malloc()
其中的大多数其他库函数;来自man 3 malloc
:
为了避免多线程应用程序中的损坏,在内部使用互斥锁来保护这些函数使用的内存管理数据结构 [...]
这肯定意味着它malloc()
是线程安全的,它可能意味着它malloc()
不是可重入的,因此没有使用它的函数。
所以我有两个问题:
1) milter 回调是否真的需要重新进入,或者这实际上是 milter API 文档中“需要线程安全”的一个非常奇怪的措辞?
2)如果他们真的需要重入,我该如何规避上面提到的问题?由于 milter API 的特性,我很难想象如何在不使用malloc()
和其他不可重入库函数的情况下在回调中做一些合理的事情。
authentication - 后缀:Milter 被通知客户端身份验证失败?
有什么方法可以告诉后缀下的 milter 给定的客户端连接尝试因身份验证错误而失败?
有时,我的电子邮件服务器会受到来自同一客户端的重复 SMTP 身份验证尝试的冲击,大概是为了试图突破我的安全性。我正在运行一个 milter,这些尝试显示为一个 CONNECT,后跟一个 CLOSE,在我的 postfix 日志中显示一条错误消息,其中包含如下信息:
我想使用我的 milter 来跟踪这些身份验证失败,但我不知道 milter 是否有可能通过 postfix 通知连接失败是专门由于身份验证失败造成的。
我可以抓取我的 postfix 日志来查找这些故障,但如果可能的话,我更愿意通过我的 milter 跟踪它们。
有没有办法用后缀 milter 做到这一点?
先感谢您。
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
我知道我可以通过编写一个队列后过滤器来测试它。但是,我的电子邮件服务器很忙,我没有可用的测试服务器,所以我想提前知道队列后过滤器是否可以以这种方式运行。
感谢您对此分享的任何智慧。
python - 是否可以使用 imap 修改电子邮件的消息?
是否可以在收到的电子邮件上添加弹出消息?
我已经搜索过 IMAP 但它只能获取电子邮件、查看电子邮件内容。我考虑过 milter,但它只用于过滤。我的想法是,当电子邮件上下文中有 URL 时,我可以显示一条警告消息,告诉用户它是否是网络钓鱼 URL。无论我使用什么电子邮件客户端,我都想让警告消息可用。
python - E1101:模块“Milter”没有“CONTINUE”成员(无成员)
我决定通过运行一些已知的工作代码来提高我的代码质量pylint
。特别是我有一个使用pymilter
. 这是我正在运行的非常简单的代码:
这是输出pylint -E
:
我看了高低,根本不明白为什么pylint
给我这个输出。我不想告诉它忽略这个特定规则,因为它实际上是大多数时候非常有用的规则。有任何想法吗?
postfix-mta - 在 Postfix 中进行 ARC 签名/验证
我已经使用 Backports 将我的 Postfix 邮件系统从 opendkim 升级到 Debian Stretch 中的 dkimpy,因为我正在尝试实现 ARC 签名和验证。到目前为止,我能够让 dkimpy 工作,在入站邮件上完成了 DKIM 验证,但无法让 DKIM 签名工作,并且在 dkimpy 中几乎没有找到关于 ARC 的信息/文档。任何帮助,将不胜感激。我的配置如下。
email - 在 Sendmail Jilter 中,JilterConstants 中提到的各种缩写是什么意思
在 Sendmail Jilter 中,JilterConstants 中提到的各种缩写是什么意思?比如:
SMFIC_HEADER
等SMFIR_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
我认为它可能意味着“发送邮件标志......”但我正在寻找官方参考。谢谢。
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 配置....
和鸽舍配置