Начиная с Vista новая установка вместо обновления является еще большим количеством метода лучшей практики, чем, прежде чем с тех пор это будет довольно легко. Вы экспортируете свои данные со встроенным инструментом миграции и затем переустанавливаете, округляя все это с переимпортом всех Ваших данных и настроек...
Реальная фиксация должна отключить конфигурацию "в расчете на пользователя" в spamassassin и глобально установить DB Baysean, но быстрый патч должен был бы добавить "-H" опцию к sudo для использования корневого каталога постфикса, где это должно иметь разрешение записать как постфикс.
Разве Вы не должны использовать spamassassin демона spamd вместо этого? Затем Вы использовали бы команду spamc вместо spamassassin. В основном, выполненный spamd из его сценария запуска и использование spamc от Вашего mailscanner.
Вы пытались добавить - dbpath параметр, как это?
sa-learn --dbpath /var/lib/amavis/.spamassassin/ ....
Это могло быть обходным решением:
# chmod o+x /root
# mv -f /root/.spamassassin /root/.spamassassin.err
# ln -s /var/spool/MailScanner/spamassassin /root/.spamassassin
# mkdir -p /var/spool/MailScanner/spamassassin
# chown postfix.apache /var/spool/MailScanner/spamassassin
# chmod 770 /var/spool/MailScanner/spamassassin
Причина
Причина в том, что спамассасин (который вызывается sa-learn, spamc, spamd, spampd и т.д.) пытается прочитать конфигурационный файл для каждого пользователя из $HOME.
Это происходит, даже если опция config allow_user_rules установлена на 0 (IMO это, скорее всего, ошибка и прошло уже длительное время).
Поскольку он не может найти эту папку (из-за разрешений), он пытается создать ее.
Как знают те, кто запускает sa-learn внутри cron, это очень раздражает, так как мы получаем сообщение об ошибке даже при успешном запуске. Просто погуглите ошибку config: путь "/root/.spamassassin" недоступен: Разрешение отклонено и посмотрите, на сколько людей это влияет (а также небезопасные исправления, которые они предлагают). Единственным безопасным решением для cron было игнорировать его и передавать stdout и stderr в /dev/null, но это немного экстремально.
Он делает это независимо от того, какие опции -C или -p или --dbpath передаются, так что вы не можете исправить это ни в опциях командной строки, ни в глобальном конфигурационном файле.
Исправление
Решение, которое мне помогло, это вызов sa-learn и передача временной переменной окружения $HOME, указывающей на место, куда не коренной пользователь, запускающий спамассасин, может записать, в моем случае это /var/cache/spampd:
например,
HOME=/var/cache/spampd sa-learn --spam /var/vmail/jason/.SPAM/cur
Это не ошибка, это вызвано тем, что вы выполняете команду sa-learn с недопустимым пользователем. Например, в моей настройке используется стандартный пользователь debian-spamd.
# sa-learn -u debian-spamd --dbpath /var/lib/spamassassin/.spamassassin/bayes --dump magic
0.000 0 3 0 non-token data: bayes db version
0.000 0 84 0 non-token data: nspam
0.000 0 6565 0 non-token data: nham
0.000 0 15128 0 non-token data: ntokens
0.000 0 1510837441 0 non-token data: oldest atime
0.000 0 1519232775 0 non-token data: newest atime
0.000 0 0 0 non-token data: last journal sync atime
0.000 0 0 0 non-token data: last expiry atime
0.000 0 0 0 non-token data: last expire atime delta
0.000 0 0 0 non-token data: last expire reduction count
А для учетных записей
# sa-learn --ham -u debian-spamd --showdots --dir /var/vmail/mydomain.com/support/cur/*
.
Learned tokens from 1 message(s) (1 message(s) examined)
у меня есть 20 учетных записей электронной почты на сервере и crons для сопоставления с ветчиной и спамом, и никогда не возникает ошибка. Убедитесь, что ваша настройка и группа user: верны в соответствующих файлах / каталогах.
Ссылка на краткое руководство о том, как исправить https://www.devcu.com/forums/topic/745-spamassassin-is-inaccessible-permission-denied/