Вам не нужно exit 0
в конце сценария.
Выполнить locate rc.local | grep -vF /etc/rc.local
, чтобы найти файлы, которые могут быть задействованы в вызове /etc/rc.local и проверке его кода выхода.
/etc/init.d/rc.local кажется таким сценарием инициализации в моем Xubuntu 15.10: Кажется, он получает код выхода и регистрирует что-то, используя это значение, если переменная "$ VERBOSE" не является "нет" .
Вы можете поместить строку echo "$ (ps -o args = $ PPID)"> / tmp / caller
в /etc/rc.local, и она запишет имя вызывающего абонента в файл / tmp / звонящий во время загрузки. В моей системе Xubuntu 15.10 это постоянный всплеск / sbin / init.
У меня нет под рукой procmail для тестирования, но вот один из подходов:
:0
* ^TO_(one@example\.com|two@example\.com|three...)
/dev/null
Идея состоит в том, чтобы поместить каждый адрес получателя спама как альтернативу/возможность в волшебное регулярное выражение "^TO _". Совпадение с любым из спам-адресов направляет электронное письмо на /dev/null. Я педантично избегал точек в адресах электронной почты, чтобы они соответствовали точкам вместо того, чтобы содержать их обычное регулярное выражение -, означающее «любой одиночный символ». На практике это вряд ли будет проблемой, так как на ваши спам-адреса -вряд ли будут приходить электронные письма, предназначенные для «one@exampleJcom» («J» вместо любого другого случайного символа ).
Мне нравится этот подход, потому что он сохраняет простоту обработки внутри procmail.
Если список целей спама часто меняется, я бы рассмотрел другой подход, например INCLUDERC
, который извлекает сгенерированный файл, содержащий рецепты «/dev/null» для каждой цели спама.
Вопрос «Как выполнить логическое ИЛИ двух или более условий?» Вопрос в FAQ по Procmail касается синтаксиса one|two|three
. Синтаксис ^TO_
описан в кратком справочнике по Procmail или в вашем локальном man procmailrc .
Рецепт, который вы нашли, можно легко адаптировать для извлечения адреса To:
.
TO=`formail -xTo: | sed -e 's/ *(.*)//; s/>.*//; s/.*[:<] *//'`
:0
* ? fgrep -qxis "$TO" killfile
/dev/null
Конечно, это может быть расширено для извлечения CC:
и ряда других заголовков получателей. Но правильным решением было бы настроить эти адреса таким образом, чтобы они не доставлялись в ваш почтовый ящик.