Назад | Перейти на главную страницу

Postfix - Opendkim - Невозможно подключиться к локальному сокету

Я получаю отклоненные ошибки, когда postfix пытается подключиться к сокету unix для opendkim, фактическая ошибка:

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 по умолчанию запускается в "режиме chroot", поэтому postfix заблокирован в / var / spool / postfix /, и в соответствии с постфиксные документы, при работе в "режиме 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"

Но когда я пытаюсь подключиться как постфикс, ничего не происходит:

# 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

Проверено на моем CentOS6, postfix не кажется "chrooted".
Моя настройка:

# /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 switch 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

Для тех, кто нашел это, и проблема не решена с помощью приведенных выше ответов, моя проблема заключалась в том, что разрешения на выполнение группы отсутствовали в папке сокета opendkim /var/run/opendkim/

Я добавил cron @reboot, чтобы убедиться, что групповые разрешения установлены @reboot root chmod g+x /var/run/opendkim/

Исправляет / исправляет следующее предупреждение, которое не возвращается после перезагрузки.

предупреждение: подключитесь к сервису Milter unix: /var/run/opendkim/opendkim.sock: Permission denied

TCP-соединение не было для меня хорошим решением, поскольку я подписываю более 100 тыс. Писем в час.

IIRC, postfix в centos 6 не запускается chrooted в его стандартной конфигурации. Когда я настроил opendkim из epel, он получил такую ​​конфигурацию:

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 после правильная настройка ключей, TrustedHosts, SigningTable, Keytable и публикация txt-записей в dns.

О, и я забыл: postfix тоже должен входить в группу opendkim.