【发布时间】:2019-10-23 17:35:26
【问题描述】:
所以这是我的 procalirc。 该脚本似乎以邮箱的“用户”身份运行,因此该脚本无法创建锁或刷新或删除邮件,因为 procmail 似乎在邮箱上有锁。
SHELL = /bin/sh
LOGFILE = $HOME/pm.log
LOGABSTRACT = "All"
VERBOSE = "on"
:0
* ^From: .*address.*
* ^Subject:.*su to root.*
{
:0c:
/var/spool/mail/tdproxymail
:0ahi
| /usr/local/tdproxy/MAILSCRIPTS/script.py
}
我将邮件发送到收件箱并将其发送到脚本。当我运行 python 脚本时,我会遍历邮箱...寻找正确的电子邮件...
mbox = mailbox.mbox('/var/mail/tdproxymail')
for key, msg in mbox.iteritems():
print(key)
if "su to root" not in (msg['subject']):
continue
一切正常,但当我到达时
mbox.remove(key)
mbox.flush()
mbox.close()
它是说我认为我没有来自 procmail 的锁的权限......
主题:su 到根文件夹: /usr/local/tdproxy/MAILSCRIPTS/edwards_sudo.py 812 Traceback(最近一次通话最后一次):文件 “/usr/local/tdproxy/MAILSCRIPTS/script.py”,第 94 行,在 mbox.lock() 文件“/usr/lib64/python2.7/mailbox.py”,第 625 行,处于锁定状态 _lock_file(self._file) 文件“/usr/lib64/python2.7/mailbox.py”,第 1976 行,在 _lock_file pre_lock = _create_temporary(f.name + '.lock') 文件“/usr/lib64/python2.7/mailbox.py”,第 2025 行,在 _create_temporary os.getpid())) 文件“/usr/lib64/python2.7/mailbox.py”,第 2015 行,在 _create_carefully fd = os.open(path, os.O_CREAT | os.O_EXCL | os.O_RDWR, 0666) OSError: [Errno 13] Permission denied: '/var/mail/tdproxymail.lock.1571858501.tdproxy.91248'
我想尝试只处理 sys.stdin 的电子邮件 但我都试过了:
#msg = email.message_from_file(sys.stdin)
#msg = email.parser.Parser().parse(sys.stdin)
它说 is_multipart 是假的,我知道这不是正确的情况......所以简而言之,如果我访问邮箱,它说有一个附件,但如果我使用管道的标准输入,据说没有附件
问题
我如何处理然后从邮箱中删除电子邮件,因为在以传入邮件的用户身份运行脚本时似乎存在权限问题。
【问题讨论】: