/ Etc / default / opendkim içindeki Debian uzatmadaki OpenDKIM soketi değiştirilemiyor


18

Debian streç opendkim kurmaya çalışıyorum ama soket değiştirme başarısız. /var/spool/postfix/opendkim/opendkim.sockPostfix ile kullanabilmek için soketi değiştirmek istiyorum .

Eklediğim Socket local:/var/spool/postfix/opendkim/opendkim.sockiçin/etc/opendkim.conf

ve ayrıca ekleme çalıştı SOCKET="local:/var/spool/postfix/opendkim/opendkim.socküzere /etc/default/opendkim(ı yaratmak zorunda olan).

Ne değiştiririm veya opendkim'i ne sıklıkta yeniden başlatırsam yapayım, her zaman /var/run/opendkim/opendkim.socksoketi olarak kullanır .

➜  ~ 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)

Neyi yanlış yapıyorum? (Sanırım bu aynı hataya sahip başka birini bulamadığım için benim hatam)

GÜNCELLEME:

Değişen /etc/default/opendkimiçin SOCKET="inet:8891@localhost"ve bu soket sonuçlarını kullanmak postfix yapılandırma değişeninet:localhost:8891: Connection refused

Update2:

Şimdi debian streç paketinde paketlenmiş dosya ile değiştirdim:

# 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=   

Soketin kararlaştırıldığı aşağıdaki satırları içerir:

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

"Bu yüzden postfix ile kullanabilirsiniz" Postfix ile çalışması için buna ihtiyacınız olduğundan emin misiniz?
Miloš Đakonović

@Miloshio Ben postfix bir chroot olarak çalışır diye düşündüm. (
Eğiticiye

@Miloshio postfix iddialar connect to Milter service local:/var/run/opendkim/opendkim.sock: No such file or directorybile hiç chrooted gibi varolduğundan düşünce/var/spool/postfix/
lw1.at

Köklenmemiş gibi geliyor. Lütfen tekrar kontrol edebilir misiniz? Yollarınız /var/spool/postfix/var/run...öyle görünüyor olmalıdır
Miloš Đakonović

Herhangi bir senaryoda, inetyerine kullanmak istiyorum local. Belki, hizmette hata ayıklama yapmıyorsanız, uygulamayı deneyin: digitalocean.com/community/tutorials/…
Miloš Đakonović

Yanıtlar:


31

Sonunda çözümü buldum.

/etc/init.d/opendkimBir şey yapmak gibi görünmüyor. Ancak bunun yerine /lib/systemd/system/opendkim.serviceyanlış soketi sabit olarak kodlanmış olan servicefile kullanılır.

Ancak debian paketi de doğru systemd hizmetini üreten bir bash içeriyor gibi görünüyor.

Yani koştuktan sonra

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart

ve soket dosyası beklenen yerde belirerek opendkim yeniden başlatılır ve çağrı yapılarak doğrulanabilir:

tail /var/log/mail.log | grep OpenDKIM

Güncelleme: Bu konu hakkında bir debian hata raporu var gibi görünüyor: # 861169


2

Yorum yapmak için yeterli bir üne sahip değil ve OpenDKim-Postfix 'bağlantı reddedildi' hata mesajına bir çözüm ararken saat sonra, LocutusBE /lib/systemd/system/opendkim.servicetarafından sağlanan düzenleme Ubuntu 17.04 ile çalıştı kabul etmek istedim :

warning: connect to Milter service inet:localhost:8891: Connection refused

Düzenle /lib/systemd/system/opendkim.service

değişiklik:

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

için:

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

systemctl daemon-reload

ve

systemctl opendkim restart

Düzenlemek denemeden önce ben opendkim gruba Postfix'i kullanıcıyı eklendi ve denenmiş /lib/opendkim/opendkim.service.generatebaşına Lukas Winkler çözümü. Bağlantı noktası numarası eklenene kadar bağlantı reddedildi hatası devam etti /lib/systemd/system/opendkim.service.

Güncellemek /lib/systemd/system/opendkim.serviceiçin Ubuntu için 8891 numaralı bağlantı noktasını kullandım ve test amacıyla orijinal ExecStart satırını yorumladım, sonra bağlantı noktası # ile yeni bir satır ekledim:

/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

Eşleşen bağlantı noktası numarası ayrıca /etc/opendkim.conf:

Socket                  inet:8891@localhost

Ve /etc/postfix/main.cf:

smtpd_milters = inet:localhost:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Systemctl arka plan programı, opendkim ve postfix yeniden başlatıldıktan sonra, giden posta sorunsuz bir şekilde imzalandı ve posta günlüğünde "DKIM-Signature alanı eklendi" mesajı görüntülendi.

systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart

Son zamanlarda OpenDkim'i Centos7 ile yapılandırırken bir bağlantı sorunu olmadı, bu yüzden görünüşe göre bu durumda Ubuntu ile ilgiliydi. Sorunu paylaştığı için Lukas Winkler'a ve çözümlerini paylaşanlara teşekkürler.


1

inetSoketi kullanmak için şunları belirtmeniz gerekir:

SOCKET="inet:12301@localhost" için /etc/default/opendkim

ayrıca, Postfix'deki ayarları değiştirmeniz gerekir:

içinde /etc/postfix/main.cf eklenti:

milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301

localİstediğiniz yola ayarlayamıyorsanız , şunları yapmanızı öneririm:

  • Bir günlük dosyasını ele mail, syslogya opendkimiçinde /var/logve check

  • kontrol /etc/init.d/opendkimkomut ve çorap dosya sert seti bir değere ise teftiş

  • Varsayılan gitmek deneyin local:/var/run/opendkim/opendkim.sock- ve belirtmek smtpd_milters = local:/var/run/opendkim/opendkim.sockve non_smtpd_milters = local:/var/run/opendkim/opendkim.sockiçinde/etc/postfix/main.cf


Şimdi yapılandırmayı tam olarak sizinki gibi değiştirdim (aynı bağlantı noktası) ama yine de warning: connect to Milter service inet:localhost:12301: Connection refused
alıyorum

düzenledikten sonra her iki hizmeti de yeniden başlatmayı denediniz mi?
Miloš Đakonović

Yaptım ve şimdi de yeniden başlattım. OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
Mail.log'a baktığımda

Bu SOCKET="inet:12301@localhostdosyayı görüyorsunuz bile, conf dosyasını açmaya hazır mısınız?
Miloš Đakonović

1
opendkim / etc / default / opendkim soket ayarını yok sayar - şimdilik /etc/opendkim.conf
SledgehammerPL

1

Bu benim için çalıştı:

Düzenle /lib/systemd/system/opendkim.service

değişiklik:

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

için:

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

systemctl daemon-reload

ve

systemctl opendkim restart

Bu tam olarak /lib/opendkim/opendkim.service.generate betiği tarafından yapılan değişikliktir.
lw1.at

Çok teşekkürler - bu, eksik olan Ubuntu 16.04.3 LTS'de düzeltildi opendkim.service.generate.
Ivan Mir

0

Sunucumu yükseltinceye kadar OpenDKIM çalıştı. OpenDKIM başlamazdı ve Milter'ın birleşmesi için çalışan bir soket yoktu. In /var/log/syslogben opendkim yükseltme eskisinden bir soket farklı bir yer yaratmaya çalıştığını başarısız olduğunu görebiliyordu. Ben de soket ayarlarını düzenlemek için çalıştı /etc/opendkim.conf, /etc/default/opendkimve /lib/systemd/system/opendkim.servicefakat yardım etmedi. Bilginin bütün zamanın önünde olduğu ortaya çıkıyor:

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

Ayarları "override.conf" dosyası üzerine yazıldığını ve benim /etc/postfix/main.cf( hizalama olarak çalışır) ile hizalanmış şekilde düzenlendiğini fark ettim :

smtpd_milters = local:/opendkim/opendkim.sock
non_smtpd_milters = local:/opendkim/opendkim.sock

Düzenle /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

Ve son olarak daemon'u ve opendkim'i yeniden başlatın:

systemctl daemon-reload && systemctl restart opendkim

0

/Etc/systemd/system/opendkim.service.d/override.conf dosyasını /etc/systemd/system/opendkim.service.d/override.conf.old olarak yeniden adlandırdım, böylece ExecStart parametrelerini geçersiz kılmayacak.

/Etc/opendkim.conf sitesinden her şey iyi toplama yapılandırmasıyla çalışıyor


0

Kurulumdan sonra opendkim servisim bağlantı noktası 8100'de uyanmadı ve önceki çözümler yardımcı olmadı. Bu yüzden denedim

/lib/opendkim/opendkim.service.generate

dedi

-bash: /lib/opendkim/opendkim.service.generate: No such file or directory

servis dosyasına baktım

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

ve garip yollar buldu

EnvironmentFile=-/etc/default/opendkim
ExecStartPre=-/bin/mkdir -p /var/run/opendkim
ExecStartPre=-/bin/chown opendkim.opendkim /var/run/opendkim

ve komuta

 /usr/sbin/opendkim -x /etc/opendkim.conf -u opendkim -P /var/run/opendkim/opendkim.pid -p $SOCKET $DAEMON_OPTS

dedim

/usr/sbin/opendkim: option requires an argument -- 'p'

(önceki kotada 2. satıra bakın)

sudo nano /lib/systemd/system/opendkim.service

ve "-" 3 kez silindi Sonra

sudo systemctl daemon-reload
sudo service opendkim restart
sudo netstat -tulpn

Bu bana yardımcı oldu :-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.