AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[procmail](server)

Martin Hope
user227963
Asked: 2022-04-16 22:15:03 +0800 CST

如果电子邮件收件人用户未通过匹配测试,则 procmail 重写主题行

  • 0

我有一个本地 procmail 用户“bob”。

如果电子邮件到达并与 [email protected] 匹配,则不应采取任何措施。

但是,如果收到一封电子邮件并且是 [anything_else]@domain.com,那么我想重写主题行以在主题行的前面插入“[spam]”。

所以它是“bob@”的反向匹配(匹配除 bob@ 以外的任何内容),我们保留原始主题行,只是在其前面添加“[spam]”。

我怎么能用 Procmail 做到这一点?

email spam procmail
  • 1 个回答
  • 52 Views
Martin Hope
Dave
Asked: 2021-02-10 10:53:44 +0800 CST

可以将 Procmail 配置为在将邮件传递给脚本后删除邮件吗?

  • 0

我已安装并配置 Postfix 以将邮件传递到 Procmail。我已将 Procmail 配置为将电子邮件传递给 Python 脚本。我还注意到 Procmail 正在将同一电子邮件的副本放入/var/spool/mail/<username>. 我不希望将消息的副本保留在那里或服务器上的任何地方。有没有办法配置 Procmail 在将消息发送到 Python 脚本后丢弃消息?

在我的 .procmailrc 中配置如下:

:0Wc:
| env python3 /home/user/python/script.py
:0
* ^From:.*@.*
/dev/null

然而,这不起作用。消息仍然结束/var/spool/mail/<username>。

postfix procmail
  • 1 个回答
  • 68 Views
Martin Hope
user1482800
Asked: 2021-01-22 21:09:00 +0800 CST

如何通过 Postfix 将原始收件人传递给 Procmail

  • 0

有没有办法在procmail中而不是通过标题来识别电子邮件的原始收件人?

收件人可以在Bcc也可以在To/之一中Cc,我正在寻找如何获取收件人的电子邮件地址。

我发现如果procmail是作为邮箱命令,那么我可以ORIGINAL_RECIPIENT按照文档进入环境,但我不明白。

postfix procmail
  • 1 个回答
  • 398 Views
Martin Hope
jviotti
Asked: 2016-12-13 15:58:26 +0800 CST

procmail 坚持写信给 macOS Sierra 中的 /var/mail

  • 6

我正在尝试使用 Google 帐户fetchmail进行配置。procmail这是我的$HOME/.fetchmailrc:

poll imap.gmail.com protocol IMAP 
   user "<email>" is jviotti here
   password '<password>'
   folder 'Inbox'
   keep
   ssl
mda 'procmail'

这是我的$HOME/.procmailrc:

MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/$LOGNAME/
LOGFILE=$MAILDIR/log/procmail
VERBOSE=on

在为每条下载的消息procmail运行时,我会收到以下错误:fetchmail -a -v

fetchmail: IMAP> A0005 FETCH 1 RFC822.HEADER
fetchmail: IMAP< * 1 FETCH (RFC822.HEADER {2865}
reading message <email>@gmail-imap.l.google.com:1 of 22 (2865 header octets) #
fetchmail: IMAP< )
fetchmail: IMAP< A0005 OK Success
fetchmail: IMAP> A0006 FETCH 1 BODY.PEEK[TEXT]
fetchmail: IMAP< * 1 FETCH (BODY[TEXT] {3983}
 (3983 body octets) *******************************.************************.***********.*****
fetchmail: IMAP< )
fetchmail: IMAP< A0006 OK Success
procmail: Couldn't create "/var/mail/jviotti"
 not flushed
fetchmail: IMAP> A0007 STORE 1 +FLAGS (\Seen)
fetchmail: IMAP< A0007 OK Success

注意procmail: Couldn't create "/var/mail/jviotti" not flushed。出于某种原因,procmail坚持写信给/var/mail即使MAILDIR=$HOME/Mail和DEFAULT=$MAILDIR/$LOGNAME/。

为什么会这样?

通过查看procmailrc手册页,我发现ORGMAIL默认为/var/mail/$LOGNAME,并且DEFAULT默认为ORGMAIL:

 ORGMAIL               /var/mail/$LOGNAME
                       (Unless -m has been specified, in which case it is unset)

 DEFAULT               $ORGMAIL

但是,即使在设置ORGMAIL为其他内容后$HOME/.procmailrc,我也会收到相同的错误/警告。

请注意,即使我收到此错误,我的邮件也已正确下载到$HOME/Mail.

编辑:查看procmail -v. 出于某种原因,它仍然将我的系统邮箱设置为 /var/mail/jviotti。

$ procmail -v
procmail v3.22 2001/09/10
    Copyright (c) 1990-2001, Stephen R. van den Berg    <[email protected]>
    Copyright (c) 1997-2001, Philip A. Guenther         <[email protected]>

Submit questions/answers to the procmail-related mailinglist by sending to:
        <[email protected]>

And of course, subscription and information requests for this list to:
        <[email protected]>

Locking strategies:     dotlocking, flock()
Default rcfile:         $HOME/.procmailrc
Your system mailbox:    /var/mail/jviotti

编辑 2:请参阅以下内容man procmail:

如果在命令行上没有指定 rcfiles 和 -p,procmail 将在读取 $HOME/.procmailrc 之前解释来自 /etc/procmailrc(如果存在)的命令。创建 /etc/procmailrc 时必须小心,因为如果情况允许,它将以 root 权限执行(当然与 $HOME/.procmailrc 文件相反)。

这里说在读取我的主配置之前,它将从 读取/etc/procmailrc,但是该文件在我的系统上不存在,即使通过显式传递-p(指向我的主配置),系统邮箱仍然是/var/mail/jviotti.

手册页还说:

如果没有找到 rcfile,或者 rcfile 的处理结束,procmail 会将邮件存储在默认的系统邮箱中。

“落到尽头”是什么意思?

这是 Procmail 日志文件中来自一条传入消息的输出:

procmail: [49293] Tue Dec 13 14:29:20 2016 
procmail: Assigning "LASTFOLDER=/Users/jviotti/Mail/jviotti/new/1481653760.49293_2.jviotti-rmbp.local" 
procmail: Notified comsat: "jviotti@0:/Users/jviotti/Mail/jviotti/new/1481653760.49293_2.jviotti-rmbp.local" 
From jviotti Tue Dec 13 14:29:20 2016 
 Subject: Re: [resin-io/etcher] chore: add support for snapshot builds (#968) 
  Folder: /Users/jviotti/Mail/jviotti/new/1481653760.49293_2.jviotti-r         8015
mac-osx procmail
  • 1 个回答
  • 812 Views
Martin Hope
aranel
Asked: 2016-12-01 07:55:18 +0800 CST

procmailrc - 更改电子邮件主题

  • 3

我想通过添加 [BULK] 来更改所有订阅列表电子邮件的主题。看起来全局 /etc/procmailrc 文件是最好的地方。但是这个过滤器也会删除一些电子邮件的所有标题(我的更改用破折号分隔):

LOGFILE=/var/log/procmail.log
TRAP=/etc/webmin/virtual-server/procmail-logger.pl
:0wi
VIRTUALMIN=|/etc/webmin/virtual-server/lookup-domain.pl --exitcode 73 $LOGNAME
EXITCODE=$?
:0
* ?/bin/test "$EXITCODE" = "73"
/dev/null
EXITCODE=0
:0
* ?/bin/test "$VIRTUALMIN" != ""
{
INCLUDERC=/etc/webmin/virtual-server/procmail/$VIRTUALMIN
}
-----
:0
* ^List-Unsubscribe:.*
{
   :0 hw
   SUBJECT=| formail -xSubject:

   :0 hfw
   * ^List-Unsubscribe:.*
   | /usr/bin/formail -i "Subject: [BULKMAIL] $SUBJECT"
}
-----
DEFAULT=$HOME/Maildir/
ORGMAIL=$HOME/Maildir/
DROPPRIVS=yes

使用此代码的用户主目录规则中的单个 .procmailrc 效果很好,但很难管理。

procmail
  • 1 个回答
  • 3030 Views
Martin Hope
David
Asked: 2016-11-28 11:26:50 +0800 CST

Procmail 过滤自和正文

  • 2

我有一个脚本生成的电子邮件,每小时发送一次。除非在某些情况下,我不需要看到它,所以我只想将它过滤到自己的邮箱中。该消息来自 cron,我要注意不要过滤掉其他 cron 消息,仅根据来源和内容过滤掉这一条。

我要匹配的正文行(消息的第一行以它开头)是:

/etc/cron.hourly/scriptrun:

这是我想出的不起作用的方法。我不确定我哪里出错了。

:0 HB
* ^From:.*[email protected]
* ^Subject: {Cron
* \/etc\/cron.hourly\/scriptrun
.Save/

任何想法将不胜感激。

regex procmail
  • 1 个回答
  • 1168 Views
Martin Hope
relativitaet
Asked: 2016-09-28 06:43:40 +0800 CST

使用 fetchmail 获取电子邮件时,Procmail 似乎没有被执行

  • 1

我有以下问题:我最近有一台新的工作 PC(Debian 测试,代号:stretch),必须重新安装fetchmail才能procmail阅读我的电子邮件mutt。现在,fetchmail效果也很好mutt,只有我的邮件的假脱机邮箱似乎保持不变,即/var/mail/user.

在我的.fetchmailrc我定义了mda应该执行的:

mda '/usr/bin/procmail -f %F -d %T';

我创建的.procmailrc看起来像这样:

# Please check if all the paths in PATH are reachable, remove the ones that
# are not.

SHELL=/bin/sh
PATH=$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin:.
MAILDIR=$HOME/Mail  # Youd better make sure it exists
SPOOL=$HOME/Mail/mbox
DEFAULT=$MAILDIR/mbox
ORGMAIL=$MAILDIR/mbox
LOGFILE=$MAILDIR/log        
LOCKFILE=$HOME/.lockmail
VERBOSE= yes
LOGABSTRACT= all

在我到处寻找之后,rc一次又一次地更改和检查文件和邮件文件夹的权限,最后尝试全部卸载并重新安装它,没有任何改变:/var/mail/user即使我在其中插入了一些递送条件,邮件仍然被递送到.procmailrc. _

最后我注意到没有/etc/procmailrc文件(我认为它应该是),并且所有log应该存在和写入的文件都不存在。

fetchmail正在调用 procmail,因为$ fetchmail -vvv带有传入电子邮件的 a 在其较长的输出中具有以下字符串:

fetchmail: about to deliver with: /usr/bin/procmail -f 'email@addres' -d 'user'

我的结论是它procmail无法正常工作或根本无法正常工作。电子邮件仍然到达,但都在那个默认邮箱/文件夹中,并且在它们传递时我无法移动它们(当我在里面时,mutt我可以将它们保存到我拥有或可能定义的所有邮箱中)。

如果有人可以帮助我解决这个问题,我将不胜感激!

亲切的问候。

linux email mutt procmail
  • 1 个回答
  • 2072 Views
Martin Hope
Greg
Asked: 2016-05-05 03:20:03 +0800 CST

是否可以拒绝 procmail 中的某些电子邮件?[在 SMTP 会话中根据电子邮件内容拒绝]

  • 3

让我们假设一个典型的设置,其中从 sendmail 调用 procmail 以将传入的电子邮件过滤到正确的邮箱中。是在与 sendmail 的传入 SMTP 连接仍处于活动状态时完成,还是在电子邮件已被接受后完成?

如果是前者,那么我理解 procmail 可能会返回到 sendmail 一个错误,以便 sendmail 回复一个错误代码,例如554 Transaction failed在接受SMTP DATA时,而不是通常的 200?

在我的例子中,sendmail 从别名数据库调用 procmail,条目如下:

theaddres:   theaddres-somedomain-com.virtual

theaddres-somedomain-com.virtual:   |"/usr/libexec/sm.bin/someuser.virtual somedomain@theaddress"

然后执行 procmail 脚本:

root@mda:/etc/mail # less /usr/libexec/sm.bin/someuser.virtual 
/usr/local/bin/procmail -a $1 /usr/local/etc/procmailrc/someuser.virtual

编辑:

添加更详细的解释。首先,我想确定下面概述的基于维基百科示例的流程在 SMTP 协议中是否可行。如果是,那么是否可以使用 procmail。然后,如果没有(我猜是这种情况),是否存在可能的实现(例如 milter)。

S: 220 smtp.example.com ESMTP Postfix
C: HELO relay.example.org 
S: 250 Hello relay.example.org, I am glad to meet you
C: MAIL FROM:<[email protected]>
S: 250 Ok
C: RCPT TO:<[email protected]>
S: 250 Ok
C: RCPT TO:<[email protected]>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <[email protected]>
C: To: "Alice Example" <[email protected]>
C: Cc: [email protected]
C: Date: Tue, 15 January 2008 16:02:43 -0500
C: Subject: Test message
C: 
C: Hello Alice.
C: This is a test message with 5 header fields and 4 lines in the message body.

Now this is what I would like to see:
S (after receiving the first 2 lines out of 4): 452 Requested action not taken: insufficient system storage
C: QUIT
S: 221 Bye
{The server closes the connection}

因此,服务器停止接收电子邮件(例如,因为它在电子邮件中检测到序列“这是一条测试消息”)并用错误回复客户端。在这种情况下,它是 452,但它可能是响应DATA 请求的任何有效错误。客户可能会也可能不会回应 QUIT,我不在乎。

这可能取决于 SMTP 协议是如何在 TCP 级别实现的。我可以将从客户端接收到的数据量限制为 50 个初始字节(例如通过限制 TCP 帧的大小)吗?SMTP 协议是否允许我在客户端发送 DATA 内容时回复错误?

此外,如果服务器在接收到 DATA 的初始部分后故意断开连接(而不是尝试向客户端发送错误),则与传输电子邮件时 TCP 连接意外断开没有什么不同。表现良好的 MTA 会尝试重新连接并重新发送电子邮件,垃圾邮件发送者可能不会费心重试。

email smtp sendmail procmail
  • 3 个回答
  • 1466 Views
Martin Hope
jsf80238
Asked: 2015-01-17 11:40:52 +0800 CST

带有捕获组的 Procmail 配方

  • 0

尝试根据正则表达式匹配直接发送电子邮件。

我知道我可以这样做:

echo | mail -s test1 me-route2

用这个食谱:

* ^To:.*me-route2\@
:0:
/home/me/folder-route2/afile

我想做的是这样的:

* ^To:.*me-(route\d)\@
:0:
/home/me/folder-$MATCH/afile

但我得到:

procmail: Lock failure on "/home/me/folder-/afile.lock"
procmail
  • 2 个回答
  • 353 Views
Martin Hope
Max Muster
Asked: 2014-03-02 12:32:29 +0800 CST

使用 procmail 检查文件是否存在并设置选项

  • 0

我想检查 procmail 是否存在文件,如果文件不存在,则取决于此设置 DROPPRIVS=yes 留在 DROPPRIVS=no

为什么这不起作用?

:0 w
* `test -f $HOME/mail/.procmailrc` ?? 1
{
    DROPPRIVS=yes
}
procmail
  • 1 个回答
  • 567 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve