Я пытаюсь установить opendkim на Debian stretch, но мне не удается изменить сокет. Я хочу изменить сокет на /var/spool/postfix/opendkim/opendkim.sock
, чтобы использовать его с постфиксом.
Я добавил Локальное сокет: / var / spool / postfix / opendkim / opendkim.sock
в /etc/opendkim.conf
, а также попытался добавить SOCKET = "local: /var/spool/postfix/opendkim/opendkim.sock
на / etc / default / opendkim
(который мне пришлось создать).
Независимо от того, что я меняю или как часто перезапускаю opendkim, он всегда использует / var / run / opendkim / opendkim .sock
в качестве сокета.
➜ ~ netstat -a | fgrep LISTEN | grep open
unix 2 [ ACC ] STREAM LISTENING 5534128 /var/run/opendkim/opendkim.sock
➜ ~ sudo systemctl status opendkim.service
● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2017-04-30 12:41:54 CEST; 5min ago
Docs: man:opendkim(8)
man:opendkim.conf(5)
man:opendkim-genkey(8)
man:opendkim-genzone(8)
man:opendkim-testadsp(8)
man:opendkim-testkey
http://www.opendkim.org/docs.html
Process: 25246 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock (code=exited, status=0/SUCCESS)
Main PID: 25248 (opendkim)
Tasks: 7 (limit: 4915)
CGroup: /system.slice/opendkim.service
├─25248 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
└─25249 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
Apr 30 12:41:54 vServer systemd[1]: Starting OpenDKIM DomainKeys Identified Mail (DKIM) Milter...
Apr 30 12:41:54 vServer systemd[1]: Started OpenDKIM DomainKeys Identified Mail (DKIM) Milter.
Apr 30 12:41:54 vServer opendkim[25249]: OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
Что я делаю не так? (Думаю, это моя ошибка, поскольку я не могу найти никого с такой же проблемой)
ОБНОВЛЕНИЕ:8891 @ localhost " и изменение конфигурации постфикса для использования этого сокета приводит к inet: localhost: 8891: соединение отклонено
UPDATE2:
Теперь я заменил файл из пакета debian stretch :
# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.
#DAEMON_OPTS=""
# Change to /var/spool/postfix/var/run/opendkim to use a Unix socket with
# postfix in a chroot:
RUNDIR=/var/spool/postfix/var/run/opendkim
#RUNDIR=/var/run/opendkim
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
# default:
SOCKET=local:$RUNDIR/opendkim.sock
# listen on all interfaces on port 54321:
#SOCKET=inet:54321
# listen on loopback on port 12345:
#SOCKET=inet:12345@localhost
# listen on 192.0.2.1 on port 12345:
#SOCKET=inet:12345@192.0.2.1
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=
Включает следующие строки, в которых определяется сокет:
if [ -f /etc/opendkim.conf ]; then
CONFIG_SOCKET=`awk '$1 == "Socket" { print $2 }' /etc/opendkim.conf`
fi
# This can be set via Socket option in config file, so it's not required
if [ -n "$SOCKET" -a -z "$CONFIG_SOCKET" ]; then
DAEMON_OPTS="-p $SOCKET $DAEMON_OPTS"
fi
Наконец-то я нашел решение.
Кажется, что /etc/init.d/opendkim
ничего не делает. Но вместо этого используется служебный файл /lib/systemd/system/opendkim.service
, в котором жестко запрограммирован неправильный сокет.
Но пакет debian, кажется, также включает bash, который генерирует правильную службу systemd. 1293] Итак, после запуска
/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
и перезапуска opendkim файл сокета появляется в ожидаемом месте, что можно проверить, позвонив:
tail /var/log/mail.log | grep OpenDKIM
Обновление: похоже, есть отчет об ошибке debian по этой проблеме: # 861169
Чтобы использовать сокет inet
, вам необходимо указать:
SOCKET = "inet: 12301 @ localhost"
в / etc / default / opendkim
, вам необходимо изменить настройки в Postfix, соответственно:
в /etc/postfix/main.cf
добавить:
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
, если вы не можете установить local
на желаемый путь, я предлагаю вам:
получить журнал из mail
, syslog
или opendkim
в / var / log
и проверьте
проверьте /etc/init.d/opendkim
скрипт и проверьте, жестко ли установлено значение для файла sock.
попробуйте использовать по умолчанию local: /var/run/opendkim/opendkim.sock
- и укажите smtpd_milters = local: /var/run/opendkim/opendkim.sock
и non_smtpd_milters = local: /var/run/opendkim/opendkim.sock
в /etc/postfix/main.cf
OpenDKIM работал, пока я не обновил свой сервер. OpenDKIM не запускался, и Milter не мог подключиться к сокету. В / var / log / syslog
я мог видеть, что opendkim не удалось создать сокет в другом месте, чем до обновления. Я попытался отредактировать настройки сокета в /etc/opendkim.conf
, / etc / default / opendkim
и /lib/systemd/system/opendkim.service
но это не помогло. Оказывается, информация была передо мной все время:
opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/opendkim.service.d
└─override.conf
Active: active (running) since Sat 2017-10-14 16:03:45 CEST; 4h 44min ago
Я заметил, что настройки были перезаписаны файлом "override.conf" и отредактированы таким образом, чтобы они были согласованы с моим /etc/postfix/main.cf
(запускается как chroot):
smtpd_milters = local:/opendkim/opendkim.sock
non_smtpd_milters = local:/opendkim/opendkim.sock
Edit /etc/systemd/system/opendkim.service.d/override.conf
[Service]
PIDFile=/var/spool/postfix/opendkim/opendkim.pid
ExecStart=
ExecStart=/usr/sbin/opendkim -P /var/spool/postfix/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock
И, наконец, перезапуск демона и opendkim:
systemctl daemon-reload && systemctl restart opendkim
У меня недостаточно репутации для комментариев, и я хотел бы признать, что после нескольких часов поиска решения для сообщения об ошибке OpenDKim-Postfix «соединение отклонено» появляется сообщение / lib / systemd / system / opendkim.service
edit, предоставленный LocutusBE работал с Ubuntu 17.04:
warning: connect to Milter service inet:localhost:8891: Connection refused
edit
/lib/systemd/system/opendkim.service
change:
ExecStart = / usr / sbin / opendkim -P /var/run/opendkim/opendkim.pid -p local: /var/run/opendkim/opendkim.sock
кому:
ExecStart = / usr / sbin / opendkim -P /var/run/opendkim/opendkim.pid -p local: /var/run/opendkim/opendkim.sock -p inet: 12301 @ localhost systemctl демон-перезагрузка
и
systemctl opendkim restart
Перед попыткой редактирования я добавил пользователя postfix в группу opendkim и попробовал /lib/opendkim/opendkim.service.generate
согласно решению Лукаса Винклера . Ошибка отказа в соединении сохранялась до тех пор, пока номер порта не был добавлен в /lib/systemd/system/opendkim.service
.
Для обновления /lib/systemd/system/opendkim.service
, Я использовал порт 8891 для Ubuntu и закомментировал исходную строку ExecStart для целей тестирования, а затем добавил новую строку с номером порта:
/lib/systemd/system/opendkim.service (Service category):
[Service]
Type=forking
PIDFile=/var/run/opendkim/opendkim.pid
User=opendkim
UMask=0007
#ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:8891@localhost
Restart=on-failure
ExecReload=/bin/kill -USR1 $MAINPID
Соответствующий номер порта был дополнительно указан в /etc/opendkim.conf
:
Socket inet:8891@localhost
И /etc/postfix/main.cf
:
smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2
После перезапуска демона systemctl, opendkim и postfix исходящая почта была подписана без проблем, и в журнале электронной почты было показано поле «DKIM-подпись» добавлено ".
systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart
Недавно при настройке OpenDkim с Centos7 не было проблем с подключением, поэтому, очевидно, в данном случае это было связано с Ubuntu. Спасибо Лукасу Винклеру за публикацию вопроса и тем, кто поделился своими решениями.
Я просто переименовал /etc/systemd/system/opendkim.service.d/override.conf в /etc/systemd/system/opendkim.service.d/override.conf.old, чтобы он не отменяет параметры ExecStart.
Все работает нормально, выбирая конфигурацию из /etc/opendkim.conf
У меня сработало:
редактировать /lib/systemd/system/opendkim.service
изменить:
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock
на:
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost
systemctl daemon-reload
и
systemctl opendkim restart
Моя служба opendkim не просыпалась на порту 8100 после установки, и предыдущие решения не помогли.Итак, я попробовал
/lib/opendkim/opendkim.service.generate
с указанным
-bash: /lib/opendkim/opendkim.service.generate: No such file or directory
, поэтому я просмотрел служебный файл
cat /lib/systemd/system/opendkim.service
# If you are using OpenDKIM with SQL datasets it might be necessary to start OpenDKIM after the database servers.
# For example, if using both MariaDB and PostgreSQL, change "After=" in the "[Unit]" section to:
# After=network.target nss-lookup.target syslog.target mariadb.service postgresql.service
[Unit]
Description=DomainKeys Identified Mail (DKIM) Milter
Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html
After=network.target nss-lookup.target
[Service]
Type=forking
EnvironmentFile=-/etc/default/opendkim
PIDFile=/var/run/opendkim/opendkim.pid
PermissionsStartOnly=true
User=opendkim
Group=opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim
ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS
TimeoutStartSec=10
ExecReload=/bin/kill -USR1 $MAINPID
и обнаружил странные пути
EnvironmentFile=-/etc/default/opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim
, а команда
/usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS
сказала
/usr/sbin/opendkim: option requires an argument -- 'p'
(посмотрите на вторую строку предыдущей квоты) поэтому я пошел в
sudo nano /lib/systemd/system/opendkim.service
и удалил "-" 3 раза Потом
sudo systemctl daemon-reload
sudo service opendkim restart
sudo netstat -tulpn
Это мне помогло: -)
Я застрял в этом на несколько часов, пока не понял, что происходит, используя эту конфигурацию:
> nocomment.sh /etc/default/opendkim
RUNDIR=/var/spool/postfix/var/run/opendkim
SOCKET=local:$RUNDIR/$NAME.sock"
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=
Проблема в том, что журналы не показывают, что opendkim не может получить доступ к сокетам из-за простые права доступа к файлам.
Чтобы исправить это:
Добавьте opendkim в постфиксную группу (а не наоборот, как я где-то читал)
chown postfix:root -R /var/spool/postfix/var/
проверьте, что :
$ ll /var/spool/postfix/var/run/opendkim/
всего 4
-rw-rw---- 1 корень постфикса 6 аврил 13 11:50 opendkim.pid
srwxrwxr-x 1 корень постфикса 0 13 апреля 11:50 opendkim.sock
Я написал небольшое напоминание об OPENDKIM в DEBIAN BUSTER. Надеюсь, это поможет