如何使用procmail更改电子邮件标题?

时间:2018-10-17 20:12:17

标签: smtp jira procmail mta

我们将JIRA Cloud用于我们的票务系统,该系统不支持使用电子邮件别名。由于我们的系统中现在有两个域,因此第二个域被添加为G Suite中的别名(两个域中的用户名相同)。管理层决定将这个新域domain2用作所有用户的主要发件人地址,这已在多个地方(例如JIRA)引起了问题,因为我们无法在G Suite或JIRA中更改主域,并且可能会收到电子邮件来自domain1或domain2。

因此,我想设置一个procmail(或同等的)过滤器,该过滤器通过POP3检查helpdesk @电子邮件帐户,对于从domain1发送的电子邮件,它将在末尾添加“ inc”,以便它与电子邮件标题和电子邮件发件人字段,然后将该消息发送到JIRA侦听的第二个电子邮件地址。它也需要显示为来自user @ domain1,而不是发送它的实际帐户(我知道,这需要在G Suite端进行额外的工作)。

由于JIRA不允许内部进行任何此类电子邮件处理,因此,JIRA可以正常运行,而无需执行可能无法满足我们需要的附件,并且由于每个用户按月收取费用而可能会变得昂贵。

因此,我试图查看procmail是否甚至是为此设置的最简单(或最佳)操作(考虑到不再维护),以及哪种代理组合对此最简单。有很多选择,但我不确定哪种设置最简单,或者怎么做最简单。

一旦我知道该往哪个方向走,我就应该能够弄清楚如何使它起作用。只是不确定从哪里开始,使用哪个代理,如何最好地实现这一目标。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题实际上与编程无关;也许尝试https://serverfault.com/https://unix.stackexchange.com/来处理基础架构部分。我将重点回答标题中的问题,尽管有关细节也相当混乱。

:0fH
* domain1
| sed 's/domain1/domain2/g'

根据您的描述,我猜测domain1实际上是domain2的子字符串。在这种情况下,需要对正则表达式进行一些改进(否则最终将domain1inc替换为domain1incinc,以此类推)。作为快速的第一个近似值,doman1($|[^i])将与domain1匹配,当其后没有任何字符或不是i的字符时。替换字符时,您将希望保留该字符,通常在sed中通过记住该字符并将其自身替换来完成。或者,您可以切换到支持更丰富的regex方言的Perl。

:0fH
* domain1($|[^i])
| perl -pe 's/domain1(?!inc)/domain2/g'

当然,也许您的实际用例看起来更像s/domain1.com/domain2.com/g,在这种情况下,.com后缀的附加上下文足以避免替换应保持不变的字符串,您可以安全地使用更简单,因此更快,甚至可能更安全的sed

同样,首先如何在收到的电子邮件上准确运行Procmail是一个单独的主题,与编程无关。如果邮件服务器上有Postfix和Procmail,只需在.procmailrc帐户的主目录中创建一个helpdesk就足够了。