Bash 将电子邮件附件自动保存为与qmail和reformime映射
自动将电子邮件附件保存为与qmail和reformime映射 我正在尝试使用dot qmail文件将附件自动移动到另一个位置 我的.qmail文件Bash 将电子邮件附件自动保存为与qmail和reformime映射,bash,email,pdf,attachment,qmail,Bash,Email,Pdf,Attachment,Qmail,自动将电子邮件附件保存为与qmail和reformime映射 我正在尝试使用dot qmail文件将附件自动移动到另一个位置 我的.qmail文件 #------------------------------------------------------------ | condredirect pdf-junkmail headermatch 'X-Spam-Status: Yes' | reformime -X /bin/sh -c "if [ "\${FILENAME#*.}" ==
#------------------------------------------------------------
| condredirect pdf-junkmail headermatch 'X-Spam-Status: Yes'
| reformime -X /bin/sh -c "if [ "\${FILENAME#*.}" == "pdf" ]; then cat > /home/users/name/home/$(date +%Y%m%d)_\$FILENAME; fi"
# Forward not set
# Vacation Message not set
./Maildir/
这适用于带有一个附件的简单邮件。我的问题是:
感谢您的帮助以下是针对您的问题的特色实现 首先为您的用户保存并设置此bash脚本的权限。
您需要从
.qmail
文件调用它:
提取pdf附件.sh
#/usr/bin/env bash
#此脚本处理stdinmime消息中的邮件消息附件
#提取所有PDF文件和附件
#并将MIME消息返回到stdout进行进一步处理
#确保所有区域设置都设置为C,以防止
#使用解码从失败的MIME头重新格式化
#[未知字符集:ANSI_X3.4-1968]
#见:https://bugs.gentoo.org/304093
导出LC_ALL=C LANG=C LANGUAGE=C
#设置已保存附件的目标路径
附件='/home/users/name/home'
陷阱'rm-f--“$mailmessage”'退出#清除临时邮件
#创建一个临时消息文件
mailmessage=“$(mktemp)”
#将stdin消息保存到tempfile
cat>“$mailmessage”
#迭代消息中的所有MIME部分
而read-r mime_段;做
#获取所有节信息标题
section_info=“$(reformime-s”$mime_section"-i您引用的-c shell命令
是错误的,您的=
与POSIXsh
的比较无效。文件名扩展名提取需要两个锐度#
,否则它将无法获取*
的最长匹配,并且在文件名中有多个点时无法工作。在形成字符串时需要引用这是一个固定版本:|reformime-X/bin/sh-c'如果[“${FILENAME##*.}”=“pdf”];那么cat>“/home/users/name/home/$(date+%Y%m%d)\$FILENAME”;fi'
所有附件的名称均为YYYYMMDD_unnamed_XXXXXXXX.pdf。如果我试图理解上述代码,我会认为名称应为YYYYMMDD_named.pdf。出了什么问题?我无法将其移动到名为“done”的邮箱。邮箱“done”是maildir(邮箱格式);so./Maildir/.done/如果附件文件在MIME部分中没有content\u name
,则应用名称YYYYMMDD\u unnamed\u.pdf
,否则用YYYYMMDD\u content\u name
命名。对于done
邮箱,可能我手头没有qmail,使用.done
或完整的文件系统路径,我真的不确定n此处使用的语法。我没有得到您的答案。如果我发送了一封带有附件“hello.pdf”的邮件,我会保存一个名为“20191023\u unnamed\u 05ckYsc5.pdf”的附件。如果我正确阅读了脚本,您首先会指定名称“hello.pd”添加到字符串内容名称,但在下一行中,您通过使用REFORIME命令重写字符串内容名称。我是否正确?或者我可能不理解您的意思。我非常感谢您的帮助。通过添加“-c”选项重新编写来解决此问题。因此,“content\u name=“$(REFORIME-c UTF-8-h”$content\u name”)”来源:
#------------------------------------------------------------
| condredirect pdf-junkmail headermatch 'X-Spam-Status: Yes'
| bash /path/to/extract-pdf-attachments.sh | condredirect done true
# Forward not set
# Vacation Message not set
./Maildir/