พื้นหลัง: หากคุณตั้งค่าเซิร์ฟเวอร์ apache ในระบบเพื่อการพัฒนาคุณอาจพบปัญหาที่ sendmail ใช้เวลานาน (อย่างน้อยหนึ่งนาที) ในการส่งอีเมล สิ่งนี้น่าผิดหวังอย่างยิ่งหากคุณพยายามแก้ไขข้อบกพร่องของอีเมลที่คุณสร้างขึ้น
มีโพสต์ฟอรัมหลายแห่งบนอินเทอร์เน็ตที่กล่าวถึงปัญหานี้ อย่างไรก็ตามไม่มีชุดรูปแบบที่อธิบายสิ่งที่ต้องทำในรายละเอียดเพียงพอสำหรับความรู้ที่ จำกัด ของฉัน นี่คือขั้นตอนที่เหมาะกับฉัน:
1) ค้นหาชื่อโฮสต์ของคุณ (ในกรณีที่คุณลืม) โดยใช้คำสั่งนี้:
:~$ cat /hosts/hostname
myhostname
2) แก้ไขไฟล์/etc/hosts
และตรวจสอบให้แน่ใจว่าบรรทัดแรกมีดังต่อไปนี้:
127.0.0.1 localhost.localdomain localhost myhostname
3) แก้ไขไฟล์การตั้งค่า sendmail ( /etc/mail/sendmail.cf
ใน Ubuntu) และยกเลิกหมายเหตุบรรทัด#O HostsFile=/etc/hosts
4) รีสตาร์ทคอมพิวเตอร์ คอมพิวเตอร์ควรบูทเร็วขึ้นมากในขณะนี้และฟังก์ชั่น mail () จะกลับมาเกือบจะในทันที อย่างไรก็ตามอีเมลจะไม่ถูกส่งเว้นแต่ว่าคุณทำตามขั้นตอนที่ 5
5) คุณต้องใหม่ใช้ตัวเลือก sendmail '-f' ทุกครั้งที่ใช้ฟังก์ชั่นจดหมาย ตัวอย่างเช่น:
mail('recipient@somewhere.com', 'the subject', 'the message', null, '-fsender@somewhere.com');
คำถามของฉันสำหรับเพื่อนสมาชิกเซิร์ฟเวอร์คือ:
สามารถทำการเปลี่ยนแปลงอะไรเพิ่มเติมเพื่อที่ฉันไม่ต้องใช้ตัวเลือก sendmail -f? แม้ว่าจะไม่ยากในการเพิ่มตัวเลือก -f แต่เป็นปัญหาเมื่อ CMS ของคุณ (เช่น Drupal) ไม่ได้ใช้ตัวเลือก -f เมื่อส่งจดหมาย คุณจะต้องแฮ็คโมดูลหลักเพื่อเพิ่มตัวเลือกนี้
cat /etc/hostname