Email

在我的伺服器中為多個域(網站)使用 DKIM

  • July 22, 2018

由於我在 Stack 中找不到這個確切的教程,所以我與大家分享我的發現。多虧了這個社區,我總能解決問題。謝謝!

原始問題:我已閱讀 MountainX 發布的教程(https://askubuntu.com/questions/134725/setup-dkim-domainkeys-for-ubuntu-postfix-and-mailman),但我不知道如何如果我想為多個域託管和發送電子郵件,請應用這些步驟。有人有線索嗎?

好的!我從問題中提到的文章中弄清楚了這一點。我在答案本身和其中提供的連結之間做了一種混合。特別是第四個連結是我使用的那個。

所以事情是這樣的。假設您有一台伺服器或 VPS,並將您的一個域作為主域並用作伺服器名稱(在我的範例中:mydomain.com)。

因此,首先,我們將更改為 root 以使事情變得更容易,但您可以跳過這一步並在每個命令之前使用 sudo。

sudo su

現在,我們安裝 OpenDKIM:

apt-get install opendkim opendkim-tools

讓我們修復配置文件。我們正在開/etc/opendkim.conf版。我使用nano,但與其他編輯器相同。

nano /etc/opendkim.conf

打開後,讓它看起來像這樣。如果您覺得舒服,您可以更改一些選項,但Domain,KeyFileSelector必須保持註釋。

# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
#Domain                  example.com
#KeyFile                 /etc/opendkim/201205.private
#Selector                201205
#
# Commonly-used options
Canonicalization        relaxed/simple
Mode                    sv
SubDomains              yes
# Log to syslog
Syslog                  yes
LogWhy                  yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask                   022
UserID                  opendkim:opendkim
#
KeyTable                /etc/opendkim/KeyTable
SigningTable            /etc/opendkim/SigningTable
ExternalIgnoreList      /etc/opendkim/TrustedHosts
InternalHosts           /etc/opendkim/TrustedHosts
#
Socket                  inet:8891@localhost
#EOF

接下來,我們創建一些文件夾和文件,其中包含有關 OpenDKIM 應該使用和處理什麼的資訊。目前,該TrustedHosts文件。我們創建和編輯它:

mkdir /etc/opendkim
nano /etc/opendkim/TrustedHosts

我們必須在此文件中放入受信任地址列表:localhost 和 127.0.0.1,以及您的伺服器名稱和 IP:

127.0.0.1
localhost
192.99.34.121
mydomain.com

現在我們編輯 OpenDKIM 配置文件。

nano /etc/default/opendkim

並在文件末尾添加這些行。他們會告訴 OpenDKIM 它應該在哪個埠接受簽名請求:

SOCKET="inet:8891@localhost" # listen on loopback on port 8891

我們打開 Postfix 配置文件。

nano /etc/postfix/main.cf

並將這些行添加到文件的末尾。他們會告訴 Postfix 它應該發送要簽名的電子郵件以及在哪裡簽名。

milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

如果您現在不添加域,則可以重新啟動所有內容,以便配置生效。

/etc/init.d/opendkim restart
/etc/init.d/postfix reload
/etc/init.d/postfix restart

完畢!伺服器已準備好使用 DKIM。現在,您需要將您的域添加到此系統。以下過程對於您要添加的所有域都是相同的。我將使用 otherdomain.com 作為範例,將其替換為您自己的。

請記住,我以前是 root,但如果您不是,請執行sudo su或在您的命令前加上關鍵字sudo.

sudo su

首先,我們為我們的域創建一個目錄並進入其中:

mkdir -p /etc/opendkim/keys/otherdomain.com
cd /etc/opendkim/keys/otherdomain.com

現在我們為域生成一個密鑰:

opendkim-genkey -r -d otherdomain.com

我們賦予 OpenDKIM 使用者新創建文件的所有權:

chown opendkim:opendkim default.private

我們打開KeyTable文件為我們的新域添加我們的新密鑰:

nano /etc/opendkim/KeyTable

我們添加到文件的末尾(在我們可能擁有的所有其他域之後):

default._domainkey.otherdomain.com otherdomain.com:default:/etc/opendkim/keys/otherdomain.com/default.private

我們打開SigningTable文件。

nano /etc/opendkim/SigningTable

並在文件末尾追加(同樣,我們將為每個域保留一行):

otherdomain.com default._domainkey.otherdomain.com

我不確定是否有必要進行下一步,但我只是這樣做了,以防萬一……我們打開TrustedHosts文件。

nano /etc/opendkim/TrustedHosts

並在文件末尾添加:

otherdomain.com

最後一件事:我們顯示文件的內容/etc/opendkim/keys/otherdomain.com/default.txt

cat /etc/opendkim/keys/otherdomain.com/default.txt

並將引號之間的資訊添加到TXT域的DNS Zone中的記錄中,我們也必須使用default._domainkey該記錄的名稱。注意:“引號之間”是以“ v=DKIM1;k=rsa; p=WIGfM...”開頭的文本。

如果我們完成了添加域(到現在為止),我們重新啟動一切以應用 cnages。

/etc/init.d/opendkim restart
/etc/init.d/postfix reload
/etc/init.d/postfix restart

完畢!

引用自:https://serverfault.com/questions/587798