Postfix 安裝過程創建了一個系統使用者postfix
及其主要群組,postfix
而 OpenDKIM 的安裝過程創建了一個系統使用者opendkim
及其主要群組opendkim
。
為了讓 Postfix 和 OpenDKIM 能夠協同工作,大多數管理員會做兩件事:
A
他們將一個輔助組附加opendkim
到 Postfix。
乙
他們使用以下三(兩)行設定 OpenDKIM 設定檔/etc/opendkim.conf
來建立 UNIX 套接字:
UMask 002
PidFile /var/run/opendkim/opendkim.pid
Socket local:/var/spool/postfix/opendkim/opendkim.sock
OpenDKIM 官方文件對配置參數進行了說明UMask
:
請求用於檔案建立的特定權限遮罩。這僅真正適用於當 Socket 指定 UNIX 域套接字時套接字的建立以及 PidFile(如果有);
我知道 UNIX 套接字很方便,因為它們可以限制使用者權限。就我而言,我希望 OpenDKIM 能夠盡可能安全地與 Postfix 一起使用。但如果UMask
設定為002
UNIX 套接字,則會建立具有所有權opendkim:opendkim
和特權664
= 的套接字rw-rw-r--
。
我知道群組成員(Postfix)需要讀取和寫入UNIX套接字,但我不明白為什麼幾乎所有線上教學(A,乙,C...)為其他人保留讀取權限?
這是普遍的誤解嗎?難道不是一個合理的價值UMask
嗎007
? PID 檔案也是使用相同的權限建立的...
如果我檢查系統上的任何其他 UNIX 套接字,其中一些套接字也擁有其他套接字的權限...為什麼擁有這一點很重要?
┌───┐
│ # │ root > mailer > ~
└─┬─┘
└─> ss -x -l | head -n 10
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_dgr UNCONN 0 0 /run/systemd/notify 14848 * 0
u_str LISTEN 0 128 /var/run/dovecot/director-userdb 13957121 * 0
u_str LISTEN 0 128 /run/systemd/private 14852 * 0
u_str LISTEN 0 100 /var/run/dovecot/dict 13957125 * 0
u_str LISTEN 0 128 /var/run/dovecot/dict-async 13957129 * 0
u_str LISTEN 0 1 /var/run/irqbalance568.sock 17673 * 0
u_dgr UNCONN 0 0 /run/systemd/journal/syslog 14859 * 0
u_str LISTEN 0 128 /var/run/dovecot/config 13957133 * 0
u_str LISTEN 0 128 /var/run/dovecot/login/login 13957135 * 0
┌───┐
│ # │ root > mailer > ~
└─┬─┘
└─> ls -l /var/run/dovecot/config
srw------- 1 root root 0 Dec 31 07:35 /var/run/dovecot/config
┌───┐
│ # │ root > mailer > ~
└─┬─┘
└─> ls -l /var/run/dovecot/login/login
srw-rw-rw- 1 root root 0 Dec 31 07:35 /var/run/dovecot/login/login
答案1
使用 umask002
可能會受到常見預設 umask 的影響022
- 這也是 opendkim 範例配置的內容引用名錄。
由於 opendkim 對 pidfile 使用一個 umask 設定和套接字文件,可能需要允許其他人對 pidfile 進行讀取訪問,這樣創建的套接字文件也具有其他人的讀取權限,作為副作用。
如果您甚至不啟用 pidfile 建立(例如,使用 systemd,您不需要它)並且將 postfix 使用者新增至 opendkim 群組,則 umask 是007
有意義的。
或者,您可以在只能由 opendkim 和 postfix 存取的目錄中建立 opendkim 套接字,如下所示:
$ cat /etc/tmpfiles.d/opendkim.conf
d /run/opendkim-postfix 0750 opendkim postfix -
opendkim 主要配置片段:
UMask 000
Socket local:/run/opendkim-postfix/opendkim.sock
結果是:
# find /run/opendkim-postfix -printf '%M %m %p\n'
drwxr-x--- 750 /run/opendkim-postfix
srwxrwxrwx 777 /run/opendkim-postfix/opendkim.sock
這樣您就不必將 postfix 使用者新增至 opendkim 群組。
您引用的教程的品質可能會受到限制,因為一些雲端供應商將其技術文件外包給客戶,然後客戶會受到雲端積分的激勵。因此,正如人們可以想像的那樣,這樣的教程可以使用其他現有的教程和範例配置,而無需太多批評。