Похоже, что ваш spamassassin, развернутый через postfix, использует плохо обученную базу данных Байеса.
см. BAYES _00 пробное попадание.
BAYES _00 должен указывать на низкую вероятность спама (ниже 1% ).
Он имеет отрицательную оценку-(-1,9 при использовании сети и байесовского соединения -см. файл 50_scores.cf
)
Возможное исправление:
удалить базы данных/файлы Байеса и снова обучить базу данных Байеса.
День месяца можно получить из команды date +%d
, которая вызывает команду date
со строкой формата %d
. Эта строка формата, возможно, описана в руководстве date
, но определенно в руководстве для функции strftime()
C. Он дает вам день месяца в виде двухзначного (, возможно, нуля -, заполненного )числа.
Вы можете использовать это в своем тесте:
day=$( date +%d )
if [ "$day" = "15" ]; then
echo 'the 15th'
fi
Обратите внимание на использованные здесь кавычки и на то, что проверки на равенство между строками выполняются с помощью одного теста =
в [... ]
.
В последних выпусках оболочки bash
(4.2+ ), которую, как я полагаю, вы на самом деле используете, вы также можете получить день месяца с помощью
printf -v day '%(%d)T' -1
Это устанавливает переменную day
на день текущего месяца, не полагаясь на внешнюю команду date
. -1
означает текущую дату и время, см. описание в руководстве .
$ date --help
Usage: date [OPTION]... [+FORMAT]
…
%d day of month (e.g., 01)
…
Таким образом, используя строковое равенство (, которое требует начального нуля для чисел до 9, например.= "09"
):
if [ "$(date +%d)" = "15" ]; then …
Или, используя числовое равенство (, которое не требует начального нуля, вы можете написать, например,.-eq 9
):
if [ "$(date +%d)" -eq 9 ]; then …
Имейте в виду, что в bash [[ $(date +%d) -eq 9 ]]
не работает, потому что когда вы используете -eq
в двойных скобках, а не в одинарных скобках, он обрабатывает начальный ноль как указание на восьмеричное число. Точно так же, если вы используете арифметические выражения, все оболочки интерпретируют начальные нули как обозначающие восьмеричное число, поэтому что-то вроде (($(date +%d) == 9))
не работает.((($(date +%d) == 15))
будет работать, но будет отображать сообщение об ошибке 8-го и 9-го числа месяца.)dayOfMonth=$(date +%d); dayOfMonth=${dayOfMonth#0}; ((d == 9))
будет работать, потому что в случае дня месяца есть только один ведущий 0.