У меня есть очередь exim из более чем 1000 электронных писем, и я хочу запустить очередь и удалить все электронные письма, которые идут на недействительные электронные письма (те, которые больше не существуют)
exiqgrep -i -f [luser]@domain | xargs exim -Mrm
Если сообщения находятся в очереди и заморожены, приведенное ниже ДОЛЖНО работать - однако я не тестировал его и не несу ответственности, если вместо этого оно станет разумным и съест ваш почтовый сервер.
for i in `mailq | grep "\*\*\* frozen \*\*\*" | cut -f 3 -d " "` ; do exim -Mrm $i ; done
Измените шаблон grep по мере необходимости, если вам нужно нажимать незамороженные сообщения (это проще всего, если вы уверены, что можете все в очереди и обязательно запускайте как пользователь, который может с пользой запускать exim -Mrm и mailq - вам может потребоваться вставить sudo
перед mailq
и exim -Mrm
...
Кроме того, почти наверняка есть более чистый способ сделать это с помощью xargs, а не for
встроенные и обратные кавычки. Надеюсь, кто-то скоро с этим согласится :-)
Сканировать файлы в /var/spool/exim4/msglog
для неверных адресов.
Вы можете пометить адрес как доставленный с помощью такой команды, как (используйте неверный адрес) cd /var/spool/exim4/msglog; for msg in $(grep -l address); do exim4 -Mmd $msg address
.
Вы можете очистить сообщения с помощью команды cd /var/spool/exim4/msglog; exim4 -M *
. Это попытается доставить все сообщения в очереди.
Вы можете заблокировать входящие сообщения на старые адреса, используя псевдоним в /etc/aliases
лайк:
address : :fail: No longer here
Видеть man exim4
и man aliases
Чтобы получить больше информации.