我正在尝试回复大于特定大小的邮件,然后转发给其他用户。得到了这个,但没有任何反应。它似乎我只能在消息的末尾添加文本。
:0
* > 1000
{
:0 fhw
| cat - ; echo "Insert this text at the top of the body"
:0
| formail -rk
| $SENDMAIL -t
}
答案 0 :(得分:0)
目前尚不清楚究竟出现了什么问题,但如果您想在开头添加文字,则显然需要在echo
之前cat
,并在身体上工作(b
) ,而不是标题(h
)。
:0 fbw
| echo "Insert this"; cat -
我认为你可以通过在最后添加一些内容来技术上打破标题,但如果你想让它出现在正文中,它需要在它之前有一个颈部(换行符)。
:0 fhw
| cat -; echo; echo "Insert this"
还有一个sed
语法允许更灵活的操作(sed
寻址可以让你说出“在以>
开头的第一行之前”之类的内容procmail里面sed
命令行的换行是多毛的。作为一种解决方法,我经常使用一个字符串,然后插入它。(多毛的确切依赖于sed
语法的细节,这些都不是标准的。实现似乎需要a
和i
命令中的换行符。)
sedscript='1i\
insert this\
'
:0 fbw
| sed "$sedscript"
(如果你很幸运,你的sed
会接受像sed '1i insert this'
这样简单的东西。上面的变体似乎是我唯一可以在macOS上工作的变体,因此通常可能是* BSD。 )
另外,1000字节长的消息绝不大。我记得在我自己的收件箱中计算了大约4k的平均消息长度,但这是在人们开始使用HTML电子邮件客户端之前。根据您的入站拓扑,只有标头可以轻松超过1000个字节。
答案 1 :(得分:0)
使用sed帮了很多忙。
SEDSCRIPT='0,/^$/ s//\nLarge message rejected [Max=4MB]\n/'
MAILADDR=me@nowhere
:0
* > 4000000
* !^FROM_DAEMON
* !^X-Loop: $MAILADDR
| formail -rk -A "X-Loop: $MAILADDR" \
| sed "$SEDSCRIPT" \
| $SENDMAIL -t