Назад | Перейти на главную страницу

Postfix: ошибка newaliases при запуске службы postfix из-за проблем с разрешением aliases.db

Недавно я начал переносить свой почтовый сервер на systemd.

У меня есть хеш-карта псевдонима:

alias_database = hash:/etc/postfix/aliases
alias_maps = hash:/etc/postfix/aliases

При запуске сервиса:

systemctl restart postfix

newalias и postalias жалуются на разрешения моего aliases.db независимо от того, какие разрешения я установил:

● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: disabled)
     Active: active (running) since Wed 2020-07-22 00:36:08 CEST; 22ms ago
    Process: 299515 ExecStartPre=/usr/bin/newaliases (code=exited, status=1/FAILURE)
    Process: 299518 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
   Main PID: 299596 (master)
        CPU: 721ms
     CGroup: /system.slice/postfix.service
             ├─299596 /usr/libexec/postfix/master -w
             ├─299597 pickup -l -t unix -u
             └─299598 qmgr -l -t unix -u

jul 22 00:36:07 rulakir systemd[1]: Starting Postfix Mail Transport Agent...
jul 22 00:36:07 rulakir newaliases[299515]: postalias: fatal: open /etc/postfix/aliases.db: Read-only file system
jul 22 00:36:07 rulakir postfix/postalias[299515]: fatal: open /etc/postfix/aliases.db: Read-only file system
jul 22 00:36:08 rulakir postfix/postfix-script[299582]: warning: group or other writable: /etc/postfix/./aliases.db
jul 22 00:36:08 rulakir postfix/postfix-script[299594]: starting the Postfix mail system
jul 22 00:36:08 rulakir postfix/master[299596]: daemon started -- version 3.5.1, configuration /etc/postfix
jul 22 00:36:08 rulakir systemd[1]: Started Postfix Mail Transport Agent.

Он жалуется, что он только для чтения, но если я меняю группу или владельца на postfix, он жалуется, что он должен принадлежать root и / или что у него есть разрешения на запись. Какие разрешения я должен дать aliases и aliases.db?

Пакет Gentoo mail-mta / postfix служба systemd unit по умолчанию включает параметры защиты, которые действительно закрывают службу. В частности:

ProtectSystem=full
ReadWritePaths=-/etc/mail/aliases.db

Несмотря на дополнительную песочницу, /etc/mail/aliases.db файл должен быть доступен для записи благодаря ReadWritePaths. На странице руководства systemd.exec:

ProtectSystem =

Принимает логический аргумент или специальные значения «полный» или «строгий». <...> Если установлено значение «full», каталог / etc также монтируется только для чтения.

ReadWritePaths =

Пути, перечисленные в ReadWritePaths =, доступны изнутри пространства имен с теми же режимами доступа, что и извне.

Пути в ReadWritePaths =, ReadOnlyPaths = и InaccessiblePaths = могут иметь префикс «-», и в этом случае они будут игнорироваться, если их не существует.

На основе последнего стабильного ebuild mail-mta / postfix (3.5.1) на момент написания этой статьи, src_prepare включает sed -i -e "/^#define ALIAS_DB_MAP/s|:/etc/aliases|:/etc/mail/aliases|" для установки местоположения по умолчанию для карты псевдонимов в соответствующем месте. Однако из ваших журналов кажется, что /etc/postfix/aliases.db. Я бы предложил оставить значение по умолчанию /etc/mail/aliases.db или переопределение ReadWritePaths с помощью systemctl edit postfix.service соответственно.