привет, я продолжаю получать эту ошибку в maillog. любые идеи
Jul 22 10:16:52 veepiz opendkim[5145]: OpenDKIM Filter: Unable to bind to port inet:20209@localhost: Address already in use
Jul 22 10:16:52 veepiz opendkim[5145]: OpenDKIM Filter: Unable to create listening socket on conn inet:20209@localhost
Jul 22 10:16:52 veepiz opendkim[5145]: smfi_opensocket() failed
#ps aux | grep opendkim
opendkim 1361 0.0 0.1 40424 780 ? Ss 10:11 0:00 /usr/local/sbin/opendkim -x /etc/opendkim.conf
opendkim 1362 0.0 0.2 56948 1508 ? Sl 10:11 0:00 /usr/local/sbin/opendkim -x /etc/opendkim.conf
opendkim 2256 19.6 0.1 40424 928 ? Ss 10:16 1:18 /usr/local/sbin/opendkim -x /etc/opendkim.conf
root 20733 0.0 0.1 61224 740 pts/0 S+ 10:23 0:00 grep opendkim
#netstat -nlp | grep 20209
tcp 0 0 127.0.0.1:20209 0.0.0.0:* LISTEN 1362/opendkim
Проблема оказалась в отсутствующей папке для процесса opendkim, указанного в /etc/opendkim.conf
:
PidFile /var/run/opendkim/opendkim.pid
Я узнал об этом, набрав systemctl status opendkim.service
после того, как он не запустился.
Вывод:
● opendkim.service - LSB: Start and stop OpenDKIM
Loaded: loaded (/etc/rc.d/init.d/opendkim)
Active: failed (Result: timeout) since Sat 2016-05-28 20:16:56 CDT; 1min 40s ago
Docs: man:systemd-sysv-generator(8)
Process: 2640 ExecStart=/etc/rc.d/init.d/opendkim start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/opendkim.service
├─2643 /usr/local/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid
└─2645 /usr/local/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid
May 28 20:11:56 alpha systemd[1]: Starting LSB: Start and stop OpenDKIM...
May 28 20:11:56 alpha opendkim[2640]: Starting OpenDKIM Milter: [ OK ]
May 28 20:11:56 alpha systemd[1]: PID file /var/run/opendkim/opendkim.pid not readable (yet?) after start.
May 28 20:11:56 alpha opendkim[2643]: can't write pid to /var/run/opendkim/opendkim.pid: No such file or directory
May 28 20:11:56 alpha opendkim[2645]: OpenDKIM Filter v2.4.2 starting (args: -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid)
May 28 20:16:56 alpha systemd[1]: opendkim.service start operation timed out. Terminating.
May 28 20:16:56 alpha systemd[1]: Failed to start LSB: Start and stop OpenDKIM.
May 28 20:16:56 alpha systemd[1]: Unit opendkim.service entered failed state.
May 28 20:16:56 alpha systemd[1]: opendkim.service failed.
Чтобы исправить это, я сначала остановил процесс opendkim:
systemctl stop opendkim
Затем я создал сервис, который при запуске создавал бы каталог:
vim /etc/systemd/system/georges.service
Содержание /etc/systemd/system/georges.service
:
[Unit]
Description=George's Simple Service
After=network.target
[Service]
Type=simple
ExecStartPre=-/usr/bin/mkdir /var/run/opendkim
ExecStart=/usr/bin/chown opendkim:opendkim /var/run/opendkim
Restart=on-abort
[Install]
WantedBy=multi-user.target
Потом я запустил эту службу:
systemctl start georges
systemctl status georges
Вывод:
[root@alpha etc]# systemctl status georges.service
● georges.service - George's Simple Service
Loaded: loaded (/etc/systemd/system/georges.service; disabled; vendor preset: disabled)
Active: inactive (dead)
May 28 20:53:50 alpha systemd[1]: Starting George's Simple Service...
May 28 20:53:50 alpha systemd[1]: Started George's Simple Service.
Наконец, я сказал системе загружать его при запуске:
systemctl enable georges
Не то чтобы я понял все, что сделал, но эй - у меня это работает! Не стесняйтесь сообщить мне, если я что-нибудь испортил, сделав это ...
ОБНОВИТЬ
я попросил вопрос об этом и они указали правильный способ создания системой каталога запуска:
Создайте этот файл:
/etc/tmpfiles.d/opendkim.conf
Вставьте эту строчку (ок 2, если посчитаете комментарий):
#Type Path Mode UID GID Age Argument
d /run/opendkim 0755 opendkim opendkim - -
Бум - он работает так же хорошо при перезагрузке, но не требует настройки новой службы.
Похоже, у вас уже запущен хотя бы один процесс OpenDKIM, что не позволяет ему запустить новый. Завершите все процессы, которые вы нашли, с помощью ps aux | grep opendkim, а затем перезапустите OpenDKIM.
В dkim-filter.conf есть опция «AutoRestart», означающая, что если служба завершается с использованием «service dkim-milter stop», она автоматически перезапускается. Однако, если вы затем попытаетесь запустить службу вручную, используя «service dkim-milter start», создается впечатление, что создается второй процесс, и журналы сервера начинают заполняться сообщениями об ошибке, поскольку порт используется.
У меня есть сценарий для ручной проверки процессов моего почтового сервера и их перезапуска, который использовал метод остановки / запуска и столкнулся с этой проблемой.
Использование «service dkim-milter restart», кажется, работает лучше, но иногда у меня возникает проблема.
синтаксис, просто переименуйте Socket в SOCKET в DKIM-MILTER.CONF