CRON(无 tty):删除具有特定“Message-Id”的消息

CRON(无 tty):删除具有特定“Message-Id”的消息

我遇到了需要从邮箱中删除的情况(例如/var/邮件/根) 带有具体信息的消息消息ID

以下代码仅适用于控制台,但我必须在没有从 cron /etc/crontab 运行的用户交互的情况下执行此操作。

文件:/tmp/clear_spam_test

mutt -f /var/mail/root -e "set alias_file=/var/mail/root" -e "set crypt_use_gpgme=no" -e "push <delete-pattern>[email protected]\n<sync-mailbox>qy"

我尝试了很多变化

  1. ssh -tt localhost 'bash -s' < /tmp/clear_spam_test

输出:
mutt -f /var/mail/root -e "set alias_file=/var/mail/root" -e "set crypt_use_gpgme=no" -e "push <delete-pattern\>[email protected]\n\<sync-mailbox\>qy"

echo -e "\nTEST $( whoami ) $0"
exit 0 打开终端时出错:未知。 TEST root bash exit 与本地主机的连接已关闭。
<n>[email protected]\n<sync-mailbox>qy"



  1. ssh -t localhost 'bash -s' < /tmp/clear_spam_test

输出:
伪终端不会被分配,因为 stdin 不是终端。
没有指定收件人。

  1. ssh -T localhost 'bash -s' < /tmp/clear_spam_test

输出:
没有指定收件人。

  1. ssh -tt $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH

输出:
打开终端时出错:未知。
TEST root /tmp/clear_spam_test
logout
与本地主机的连接已关闭。

  1. ssh -t $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH

输出:
伪终端不会被分配,因为 stdin 不是终端。
消息:ttyname 失败:设备的 ioctl 不合适
未指定收件人。
测试根 /tmp/clear_spam_test

  1. ssh -T $server <<'ENDSSH' echo $(/tmp/clear_spam_test) exit 0 ENDSSH

输出:
消息:ttyname 失败:设备的 ioctl 不合适
未指定收件人。
测试根 /tmp/clear_spam_test

这些都不起作用。我也尝试过IFS。

答案1

这里同样的问题。这个 mutt 命令似乎依赖于 cron 无法构建的工作终端窗口。至少对我来说,它有助于使用屏幕启动虚拟终端:

screen -d -m  mutt -f /var/mail/root -e "set alias_file=/var/mail/root" -e "set crypt_use_gpgme=no" -e "push <delete-pattern>[email protected]\n<sync-mailbox>qy"

相关内容