2022/05/11

gmailにspamの烙印を押されたので、SPFレコード、DKIMを設定する。

 SPFレコードの設定

# nano /var/named/hoge-co.jp.db

末尾に

hoge-co.jp.              IN      TXT    "v=spf1 +ip4:xxx.xxx.xxx.xxx +mx ~all"
  ※xxx.xxx.xxx.xxxはメールサーバのIPv4アドレス
を追加

BINDを再起動
# service named restart

 

OpenDKIM のインストール
# yum install -y –-enablerepo=epel opendkim

ディレクトリ作成
# mkdir /etc/opendkim/keys/hoge-co.jp
# opendkim-genkey -D /etc/opendkim/keys/hoge-co.jp -b 2048 -d hoge-co.jp -s 20220505

-b 1024以上でないとgoogleは認めてくれないが大きければ良い訳ではないようなので、2048とした。
-d 一般的にはメールアドレスの@より後ろのドメイン名を指定
-s 管理しやすい任意の文字列を指定 とりあえず日付

念のためパーミッションを変更

# chmod 700 /etc/opendkim/keys/*/
# chmod 600 /etc/opendkim/keys/*/
*

設定ファイル修正
# nano
/etc/opendkim.conf

Mode sv   s→svに変更
Syslog  yes
SyslogSuccess   yes
LogWhy  yes
UserID  opendkim
Socket  inet:8891@localhost
Umask   007
# Statistics    /var/spool/opendkim/stats.dat
SendReports     yes
SoftwareHeader  yes
Canonicalization        relaxed/relaxed
# Domain        example.com
#Selector      default  コメントアウト
MinimumKeyBits  1024
KeyFile /etc/opendkim/keys/default.private
KeyTable        /etc/opendkim/KeyTable の#を外し有効化
SigningTable    refile:/etc/opendkim/SigningTable の#を外し有効化
AlwaysAddARHeader true 追加

保存して閉じる

#nano /etc/opendkim/KeyTable
20220505._domainkey.hoge-co.jp hoge-co.jp:20220505:/etc/opendkim/keys/hoge-co.jp/20220510.private

保存して閉じる

#nano
/etc/opendkim/SigningTable
*@hoge-c.jp 20220505._domainkey.hoge-co.jp

保存して閉じる

起動と自動起動化
# systemctl start opendkim
#
systemctl enable opendkim

postfixに関連付け

#nano
/etc/postfix/main.cf
 
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,reject_unauth_pipelining,reject_invalid_hostname,check_sender_access hash:/etc/postfix/check_backscatterer,check_policy_service unix:private/policyd-spf
 
 
末尾に
milter_protocol = 2
# OpenDKIM smtpdが利用するmilter定義
smtpd_milters = inet:localhost:8891
# smtpd以外が利用するmilter定義
non_smtpd_milters = $smtpd_milters
# milterがメールを受信時のデフォルト動作
milter_default_action = accept

を追加し、保存して閉じる

再起動
# postfix reload

DKIM 公開鍵レコード設定

自動的に255文字以下に分割してくれているので、加工してDNSに記載する。

ADSPをDNSに設定
#nano
/var/named/hoge-co.jp.db に
20220505._domainkey.hoge-co.jp.  IN      TXT     ( "v=DKIM1; k=rsa; "

          "pごにょごにょ~"

          "ごにょごにょ~");
_adsp
._domainkey.hoge-co.jp.  IN TXT "dkim=unknown" を追加。

 

BINDを再起動
# service named restart

上手くいかねぇ・・・。
https://de-vraag.com/ja/71638753
同じような症状があったので、参考にさせてもらいようやく何とか上手くいった・・・。

postfixユーザーをopendkimのグループに所属させないと、ソケットが通らない。
こんなの分からねーですよ・・・。6時間位かかった・・・。

# usermod -aG opendkim postfix

# cat /etc/group
 opendkim:x:989:postfix 所属した。

先人によると、このデーモンに不具合があるらしく、
# nano /lib/systemd/system/opendkim.service
 ExecStart=/usr/sbin/opendkim $OPTIONS 
この$OPTIONSの宛先がおかしいことがあるらしい。
$OPTIONS の先を探しに行っ足りしたが、上手くいかず、それに嵌った。

/var/run/opendkim/opendkim.pid
/var/run/opendkim/opendkim.sock この定義ファイルを読み込ませたいのだが、

warning: connect to Milter service inet:localhost:8891: Connection refused
上記エラーがかえって来る。


最終的に、先人の方々の知恵を借り、力技でゴリ押した。

ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:8891@localhost

User=opendkim
Group=opendkim

とした。

暫くして、SPFレコード、DKIMレコード共に支障なく浸透したことを確認後、
セカンダリDNSと同期をとるために、ゾーン定義(
/var/named/hoge-co.jp.db)のシリアル値を更新して

@       IN      SOA     ns.hoge-co.jp. root.hoge-co.jp. (
                                2022050500 ; serial値
                                1H      ; refresh (3 hours)
                                900     ; retry (1 hour)
                                5D      ; expire (2 weeks 6 days)
                                1D      ; minimum (1 day)
                                )
保存して
BINDを再起動。

※googleさんは、セカンダリDNSの設定も併せて見に行くようで、
 プライマリDNSとセカンダリDNSがきっちり同期とれていないとメールを弾く仕様にレベルアップしているようだ。


DNSが浸透したらgoogleさんがメールを許容してくれるようになった。


とりあえず、OpenDMARCのインストールまでは行った。

# yum install opendmarc
# nano /etc/opendmarc.conf
が、今のところgoogleさんはDMARCは必須としていないので、設定は今後様子を見て行う。