web-dev-qa-db-ja.com

Postfix-Opendkim-ローカルソケットに接続できません

PostfixがopendkimのUNIXソケットに接続しようとすると、拒否されたエラーが発生します。実際のエラー:

Sep 24 15:41:43 service-a-4 postfix/cleanup[17414]: warning: connect to Milter service unix:var/run/opendkim/opendkim.sock: Permission denied

postfix docs によると、postfixはデフォルトで「chrootモード」で実行されるため、postfixは/ var/spool/postfix /にロックされ、 postfix docs によると、「chrootモード」で実行している場合、milter(ソケット)の参照はすべて(/ var/spool/postfixに対して)相対的です。

だから私の設定は次のようになります:

# /etc/opendkim.conf
Socket local:/var/spool/postfix/var/run/opendkim/opendkim.sock

# /etc/postfix/main.cf
smtpd_milters = unix:/var/run/opendkim/opendkim.sock

テストメールを送信しようとすると、アクセス許可拒否エラーが表示されるので、いくつかのアクセス許可テストを試しました。

# Correctly lists the socket file
Sudo su -s /bin/bash postfix -c "ls /var/spool/postfix/var/run/opendkim/opendkim.sock"

しかし、postfixとして接続しようとしても、何も起こりません。

# Does not work
Sudo su -s /bin/bash postfix -c "nc -U -D /var/spool/postfix/var/run/opendkim/opendkim.sock"

# Does work (as root)
nc -U -D /var/spool/postfix/var/run/opendkim/opendkim.sock

この問題をデバッグしている間、SELinuxは一時的に無効になります(許容されます)。また、構成を変更するたびに両方のプロセス(opendkimとpostfix)を再起動しています。

他に何が欠けていますか?

バージョン:

CentOS 6.5
Postfix v2.6.6
Opendkim v2.9
4
Mike Purcell

私のCentOS6でテストしたところ、postfixは実際には「chrootされていない」ようです。
私の設定:

# /etc/opendkim.conf
Socket local:/var/run/opendkim/opendkim.sock

# /etc/postfix/main.cf
smtpd_milters = unix:/var/run/opendkim/opendkim.sock

これは以下を生成します:connect to Milter service unix:/var/run/opendkim/opendkim.sock: Permission denied
ただし、ソケットumaskは002なので、srwxrwxr-x. opendkim:opendkim opendkim.sock

umaskを000に変更すると、問題が解決します。それでも、opendkimでuser:groupを切り替える方が、一般に公開するよりも優れています。

環境:

centos 6.5 2.6.32-573.7.1.el6.x86_64
postfix 2.6.6-6.el6_5 @updates
opendkim 2.10.3-1.el6 @epel
5
atitan

これを見つけて上記の回答で問題が解決しない場合、私の問題は、opendkimソケットフォルダーにグループ実行権限がない/var/run/opendkim/

グループ権限が設定されていることを確認するために、cron @rebootを追加しました@reboot root chmod g+x /var/run/opendkim/

再起動後に戻ることからの次の警告を修正/パッチします。

警告:Milterサービスに接続しますunix:/var/run/opendkim/opendkim.sock:権限が拒否されました

1時間あたり10万通以上のメールに署名しているので、tcp接続は良い解決策ではありませんでした。

2
Jacob Evans

IIRC、centos 6のPostfixは、標準構成でchrootされて実行されません。私がepelからopendkimを設定したとき、それはこの設定に付属していました:

Socket                  inet:8891@localhost

したがって、postfixで有効にするには、これをmain.cfに追加するだけでした。

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2

en opendkim en postfix afterを再起動して、キー、TrustedHosts、SigningTable、Keytableを適切に構成し、txtレコードをDNSに公開します。

O、そして私は忘れました:postfixもopendkimグループのメンバーである必要があります。

1
natxo asenjo