Недавно я начал переносить свой почтовый сервер на 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
соответственно.