ข้อผิดพลาดของ Sendmail บน OS X Mountain Lion


27

ฉันได้รับข้อผิดพลาดเมื่อพยายามเรียกใช้ sendmail ฉันใช้ OS X 10.8 Mountain Lion

sendmail: fatal: chdir /Library/Server/Mail/Data/spool: No such file or directory

คำตอบ:


35

เพียงดำเนินการใน terminal

sudo mkdir -p /Library/Server/Mail/Data/spool
sudo /usr/sbin/postfix set-permissions
sudo /usr/sbin/postfix start

นั่นเป็นเคล็ดลับสำหรับฉัน


ขอขอบคุณพยายามทำเช่นนั้นจดหมายไม่ออกไปข้างนอกและได้รับข้อผิดพลาดต่อไปนี้: postdrop: คำเตือน: mail_queue_enter: สร้างไฟล์ maildrop / 609676.26828: ปฏิเสธการอนุญาต

ฉันต้องทำ sudo / usr / sbin / postfix set-permission เช่นกันและตอนนี้ก็ใช้งานได้

ขอบคุณพวงมันใช้งานได้อย่างมีเสน่ห์แม้ว่ามันจะมีข้อผิดพลาดและคำเตือนออกมาบ้าง
Swader

ฉันติดตาม> sudo mkdir ... และใช้งานได้ ขอบคุณสำหรับการแก้ปัญหา
Abhinav Chittora

23

เพื่อที่จะกำจัดคำเตือนทั้งหมดที่ฉันต้องทำต่อไปนี้:

sudo mkdir -p /Library/Server/Mail/Data/spool
sudo gzip /usr/share/man/man1/{postalias.1,postcat.1,postconf.1,postdrop.1,postfix.1,postkick.1,postlock.1,postlog.1,postmap.1,postmulti.1,postqueue.1,postsuper.1,sendmail.1}
sudo gzip /usr/share/man/man5/{access.5,aliases.5,bounce.5,canonical.5,cidr_table.5,generic.5,header_checks.5,ldap_table.5,master.5,mysql_table.5,nisplus_table.5,pcre_table.5,pgsql_table.5,postconf.5,postfix-wrapper.5,regexp_table.5,relocated.5,tcp_table.5,transport.5,virtual.5}
sudo gzip /usr/share/man/man8/{anvil.8,bounce.8,cleanup.8,discard.8,error.8,flush.8,local.8,master.8,oqmgr.8,pickup.8,pipe.8,proxymap.8,qmgr.8,qmqpd.8,scache.8,showq.8,smtp.8,smtpd.8,spawn.8,tlsmgr.8,trivial-rewrite.8,verify.8,virtual.8}
sudo /usr/sbin/postfix set-permissions
sudo chmod 700 /Library/Server/Mail/Data/mta
sudo /usr/sbin/postfix start

1
ฉันไม่คิดว่าการซิปหน้าคู่มือเป็นสิ่งจำเป็น
nohillside

3
การซิปหน้า man นั้นเป็นสิ่งที่จำเป็นเพื่อหลีกเลี่ยงคำเตือนนี้เมื่อเรียกใช้สิทธิ์การอนุญาต:chown: /usr/share/man/man1/postalias.1.gz: No such file or directory
Andrew Ferrier

สิ่งนี้ใช้งานได้ดีเหมือนมีเสน่ห์เพียงแค่วางมันทั้งหมดและเข้ากันได้ดี ขอบคุณ @ แจสเปอร์!
adriandz

3

วิธีแก้ไขดูเหมือนจะแก้ไขข้อผิดพลาดใน 10.8 ซึ่งบริการแฟกซ์หยุดส่งอีเมลหลังจากการอัพเกรด 10.8


0

TLDR : เปลี่ยนqueue_directoryตัวแปรในการ/etc/postfix/main.cf/var/spool/postfix

คำตอบแบบเต็ม:

mkdir -p วิธีแนวโน้มงาน แต่ฉันสงสัยว่ามีวิธีที่ง่าย คำเตือนที่เป็นธรรมฉันยังใหม่กับ Postfix และทั้งหมดนี้อาจไม่ถูกต้อง

ดูเหมือนว่ารุ่นต่าง ๆ ของ Mac OS X ใช้หนึ่งในสองไดเรกทอรีรากสำหรับจดหมาย:

  • /var/spool/postfix
  • /Library/Server/Mail

ทั้งสองดูเหมือนจะงุนงงเมื่อเวลาผ่านไป (หมายเหตุ/varจริง ๆ แล้วเป็น symlink ไป/private/varดังนั้นคุณมักจะเห็นสิ่งที่ใช้แทนกันได้)

สิ่งที่ฉันสามารถบอกได้/Library/Server/Mailคือไดเรกทอรีที่Mac OS X Serverใช้สำหรับบริการจดหมายของตนซึ่งขึ้นอยู่กับ แต่ไม่เหมือนกับ Postfix /var/spool/postfixในทางกลับกันเป็นไดเรกทอรีที่ต้องการ (หน้า 14) สำหรับการดำเนินงานภายในของ Postfix

มีสองไฟล์คอนฟิกูเรชันที่สำคัญซึ่งอ้างอิงถึงไดเร็กทอรีเหล่านี้:

  • /etc/postfix/main.cf
  • /System/Library/LaunchDaemons/org.postfix.master.plist

คุณเห็นข้อความ "ไม่มีไฟล์หรือข้อผิดพลาดของไดเรกทอรี" ฉันสงสัยว่าเนื่องจากqueue_directoryตัวแปรในการmain.cfอ้างอิงของ Postfix /Library/Server/Mail/Data/spoolซึ่งไม่มีอยู่ ใน Mac OS X ปกติ ( ต่างจากเซิร์ฟเวอร์ ) /Library/Serverไดเรกทอรีทั้งหมดไม่มีอยู่ แทนที่จะสร้างได้ลองแก้ไขตัวแปรที่จะเป็นqueue_directory/var/spool/postfix

ประเด็นที่สองที่ไม่สอดคล้องกันอยู่ในการตั้งค่าเริ่มต้นสำหรับ launchd ซึ่งเป็นผู้จัดการภูตของ Mac OS X ไม่จำเป็นต้องเรียกใช้ Postfix ตลอดเวลาเนื่องจาก launchd สามารถดูไดเร็กทอรีสำหรับเมลขาออกและรันเฉพาะ Postfix เมื่อมีสิ่งที่ต้องส่ง เพื่อให้แน่ใจว่านี้จะเกิดขึ้นที่QueueDirectoriesสำคัญในการorg.postfix.master.plistตอบสนองความต้องการในรายการmaildropไดเรกทอรีย่อยของไดเรกทอรีในmain.cf's queue_directoryตัวแปร ตัวอย่างเช่นฉันเปลี่ยนorg.postfix.master.plistไฟล์เป็น:

<key>QueueDirectories</key>
<array>
        <string>/var/spool/postfix/maildrop</string>
</array>

ด้วยสองไดเรกทอรีที่สอดคล้องกัน Postfix ควรเปิดใช้งาน คุณควรดู/var/log/mail.logในขณะที่คุณเรียกใช้:

$ sudo launchctl unload /System/Library/LaunchDaemons/org.postfix.master.plist
$ sudo launchctl load /System/Library/LaunchDaemons/org.postfix.master.plist
$ sudo launchctl start org.postfix.master

คำสั่งสุดท้ายของคำสั่งเตะเริ่มต้น Postfix ดังนั้นคุณสามารถดูmail.logข้อเสนอแนะการดีบักได้ทันที แต่ไม่จำเป็นต้องดำเนินการตามปกติอีกครั้ง Launchd จะเรียกใช้ Postfix ตามต้องการ (หากคุณมั่นใจว่าต้องการให้ Postfix ทำงานตลอดเวลาให้ใช้KeepAliveรหัสที่มีรายละเอียดในlaunchd.plistหน้า man )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.