OpenDKIM सॉकेट को डेबियन स्ट्रेच में / etc / default / opendkim में नहीं बदल सकते


18

मैं डेबियन खिंचाव पर ओपेंडेकिम स्थापित करने की कोशिश कर रहा हूं, लेकिन मैं सॉकेट को बदलने में विफल हूं। मैं सॉकेट को बदलना चाहता हूं /var/spool/postfix/opendkim/opendkim.sockइसलिए मैं इसे पोस्टफिक्स के साथ उपयोग कर सकता हूं।

मैंने जोड़ा Socket local:/var/spool/postfix/opendkim/opendkim.sockहै/etc/opendkim.conf

और यह भी जोड़ने की कोशिश की SOCKET="local:/var/spool/postfix/opendkim/opendkim.sockकरने के लिए /etc/default/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)

मैं क्या गलत कर रहा हूं? (मुझे लगता है कि यह मेरी गलती है क्योंकि मैं किसी और को उसी मुद्दे के साथ नहीं पा सकता)

अपडेट करें:

बदलने /etc/default/opendkimके लिए SOCKET="inet:8891@localhost"और इस सॉकेट परिणाम का उपयोग करने के पोस्टफ़िक्स config बदल रहा हैinet:localhost:8891: Connection refused

UPDATE2:

मैंने अब डेबियन स्ट्रेच पैकेज में बंधी फाइल को बदल दिया है:

# 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

"तो मैं इसे पोस्टफिक्स के साथ उपयोग कर सकता हूं" क्या आपको यकीन है कि पोस्टफिक्स के साथ काम करने के लिए आपको इसकी आवश्यकता है?
मिलो Milakonović

@Miloshio मैंने सोचा कि जैसे कि पोस्टफ़िक्स एक चेरोट में चलता है। ( मैं जिस ट्यूटोरियल का अनुसरण कर रहा हूं उसके अनुसार )
lw1.at

@Moshio पोस्टफिक्स के दावों को connect to Milter service local:/var/run/opendkim/opendkim.sock: No such file or directoryभी लगा कि यह मौजूद है क्योंकि यह chroot है/var/spool/postfix/
lw1.at

ऐसा लगता है कि यह काट नहीं है। कृपया आप फिर से जाँच कर सकते हैं? आपके रास्तों को /var/spool/postfix/var/run...यह देखना चाहिए कि क्या यह है
मिलो onakonović

किसी भी परिदृश्य में, मैं inetइसके बजाय उपयोग करूंगा local। हो सकता है, यदि आप सेवा से डिबग नहीं कर रहे हैं, तो लागू करने का प्रयास करें: digitalocean.com/community/tutorials/…
Miloš Milakonović

जवाबों:


31

मैंने आखिर इसका हल ढूंढ लिया।

/etc/init.d/opendkimकुछ भी करने को नहीं लगता है। लेकिन इसके बजाय सर्विसफाइल /lib/systemd/system/opendkim.serviceका उपयोग किया जाता है जिसमें गलत सॉकेट हार्डकोड होता था।

लेकिन डेबियन पैकेज में एक बैश भी शामिल है जो सही सिस्टमड सर्विस को उत्पन्न करता है।

इसलिए दौड़ने के बाद

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

और ऑपेकिट को फिर से शुरू करके सॉकेट फ़ाइल अपेक्षित स्थान पर दिखाई देती है, जिसे कॉल करके सत्यापित किया जा सकता है:

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

अपडेट: ऐसा लगता है कि इस मुद्दे के बारे में एक डेबियन बग्रेपोर्ट है : # 861169


2

मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है और यह स्वीकार करना चाहता था कि OpenDKim-Postfix 'कनेक्शन के समाधान की खोज करने के घंटों के बाद' त्रुटि संदेश से इनकार कर दिया /lib/systemd/system/opendkim.serviceगया, LocutusBE द्वारा प्रदान किया गया संपादन Ubuntu 17.04 के साथ काम करता है:

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

संपादित करें /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 समूह के लिए पोस्टफ़िक्स उपयोगकर्ता जोड़ा और कोशिश की /lib/opendkim/opendkim.service.generateप्रति लुकास विंकलर के समाधान। कनेक्शन से इनकार कर दिया त्रुटि तब तक बनी रही जब तक कि पोर्ट संख्या को जोड़ा नहीं गया /lib/systemd/system/opendkim.service

अपडेट करने के लिए /lib/systemd/system/opendkim.service, मैंने उबंटू के लिए पोर्ट 8891 का उपयोग किया और परीक्षण के उद्देश्यों के लिए मूल एक्सटेस्टार्ट लाइन पर टिप्पणी की, फिर पोर्ट # के साथ एक नई लाइन जोड़ी:

/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

Systemctl डेमॉन, opendkim और पोस्टफ़िक्स को पुनः आरंभ करने के बाद, आउटगोइंग मेल को बिना किसी समस्या के साइन किया गया और मेल लॉग में "DKIM- सिग्नेचर फ़ील्ड जोड़ा गया" दिखाया गया।

systemctl daemon-reload
systemctl opendkim restart
systemctl postfix restart

हाल ही में Centos7 के साथ OpenDkim को कॉन्फ़िगर करते समय कोई कनेक्शन समस्या नहीं थी, इसलिए स्पष्ट रूप से इस उदाहरण में यह Ubuntu-संबंधित था। सवाल पोस्ट करने और उनके समाधान साझा करने के लिए लुकास विंकलर का धन्यवाद।


1

inetसॉकेट का उपयोग करने के लिए आपको निर्दिष्ट करने की आवश्यकता है:

SOCKET="inet:12301@localhost" सेवा /etc/default/opendkim

इसके अलावा, आपको परिणामस्वरूप पोस्टफ़िक्स में सेटिंग्स बदलने की आवश्यकता है:

में /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


मैंने अब आपके (बिल्कुल पोर्ट) की तरह होने के लिए warning: connect to Milter service inet:localhost:12301: Connection refused
कॉन्फिगरेशन

क्या आपने संपादन के बाद दोनों सेवाओं को पुनः आरंभ करने का प्रयास किया?
मिलोज़ ovakonović

मैंने किया और अब मैंने भी रिबूट किया। जब मैं mail.log को देखता हूं तो मुझे हमेशा निम्न पंक्ति दिखाई देती हैOpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock)
lw1.at

आप SOCKET="inet:12301@localhostopendkim conf फ़ाइल के लिए सेट के साथ भी वह रेखा देखते हैं ?
मिलो Milakonović

1
opendkim ध्यान न दी / etc / default / opendkim सॉकेट की स्थापना - अब हम परिवर्तन /etc/opendkim.conf करने के लिए है के लिए
SledgehammerPL

1

यह मेरे लिए काम किया:

संपादित करें /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

यह ठीक वही परिवर्तन है जो /lib/opendkim/opendkim.service.generate स्क्रिप्ट द्वारा किया जाता है।
lw1.at

बहुत बहुत धन्यवाद - यह Ubuntu 16.04.3 LTS कि कमी है पर तय की opendkim.service.generate
इवान मीर

0

OpenDKIM ने तब तक काम किया जब तक मैंने अपने सर्वर को अपग्रेड नहीं किया। OpenDKIM शुरू नहीं होगा और वहाँ कोई सॉकेट चलाने के लिए मिल्टर के लिए conenct करने के लिए चल रहा था। में /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

मैंने देखा कि सेटिंग्स को "ओवरराइड.कॉन्फ़" फ़ाइल द्वारा अधिलेखित कर दिया गया था और संपादित किया गया था, इसलिए इसे मेरे साथ जोड़ा गया था /etc/postfix/main.cf(चोल के रूप में रन):

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

संपादित करें /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

और अंत में डेमॉन और ऑपेंडकिम को फिर से शुरू करना:

systemctl daemon-reload && systemctl restart opendkim

0

मैंने सिर्फ /etc/systemd/system/opendkim.service.d/override.conf का नाम बदलकर /etc/systemd/system/opendkim.service.d/override.conf.old कर दिया है ताकि यह ExecStart के मापदंडों को ओवरराइड न करे।

सब कुछ /etc/opendkim.conf से ठीक पिकिंग कॉन्फिग काम कर रहा है


0

मेरी 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'

(पिछले कोटा पर 2 पंक्ति को देखो) तो मैं गया

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

और फिर "-" 3 बार हटा दिया गया

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

इससे मुझे मदद मिली :-)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.