ฉันจะตั้งค่าเซิร์ฟเวอร์อีเมลได้อย่างไร


59

VPS ของฉันใช้งาน Ubuntu และฉันต้องการรับอีเมลไปยังโดเมนของฉัน

ฉันจะตั้งค่าเซิร์ฟเวอร์อีเมลเพื่อทำสิ่งนี้ได้อย่างง่ายดายได้อย่างไร


3
คำถามที่ดีฉันกำลังรอคำตอบที่ดี ฉันได้สร้างเซิร์ฟเวอร์อีเมลสองสามปีและมันไม่เคยง่ายเลย มากของการตัดสินใจ: สิ่งที่เซิร์ฟเวอร์ SMS, สิ่ง IMAP / POP, วิธีการจัดเก็บอีเมล, วิธีการจัดเก็บผู้ใช้ ... ฉันสมบูรณ์ไม่สามารถที่จะให้ง่ายคำตอบ
Javier Rivera

คำตอบ:


48

นี่คือวิธีที่ฉันติดตั้งเมลบนเครื่องผลิตของเรา นี่คือเกณฑ์ที่เราต้องการ:

  • บัญชีอีเมล
  • อีเมลแทน (ส่งต่อ)
  • IMAP, POP3 และ SMTP

"ง่าย" (tl; dr)

ครั้งแรกฉันต้องการที่อยู่สิ่งที่ดูเหมือนจะเป็นทางออกที่ง่ายที่สุด

sudo tasksel install mail-server

มีปัญหาหลายอย่างที่เกิดขึ้นเมื่อเราลองทำสิ่งนี้: อันดับแรกมันติดตั้ง Dovecot ซึ่งใช้ได้ดีที่สุด แต่เราถือว่า Courier ดีกว่าสำหรับสองความต้องการของเรา อันดับที่สองใช้ประโยชน์ Postfix ซึ่งยอดเยี่ยม แต่เราก็ต้องการ Exim เพราะเป็นเซิร์ฟเวอร์ MTA / SMTP ที่ทรงพลังกว่า ประการที่สามมันติดตั้ง MySQL - ในการกำหนดค่าฉันใช้เราชอบไฟล์แบนสำหรับการกำหนดค่าเพราะมันเป็นจุดแตกหักน้อยกว่า คิดว่าจะเกิดอะไรขึ้นหาก MySQL ขัดข้องด้วยสาเหตุที่ไม่ทราบสาเหตุ มิฉะนั้นแพคเกจที่เหลือจะค่อนข้างตรงไปตรงมาและง่ายต่อการบำรุงรักษาสำหรับบริการอีเมลขนาดเล็ก (คิดว่าโดเมนอีเมลทั้งหมด 1-2 โดเมน)

การกำหนดค่าของเรา

โครงสร้างสารบบ

เราหลงทางเล็กน้อยนอกเส้นทางของการกำหนดค่าปกติ แต่ทำให้การจัดการง่ายขึ้น

จดหมายของเราทั้งหมดถูกเก็บไว้ใน/var/mail/virtual/<domain>/<user>/mailดังนั้นสำหรับตัวอย่างในอนาคตผมจะใช้email@example.com, fwd@example.com, foo@example.comที่จะเป็นตัวแทนที่อยู่อีเมลส่งไปที่example@gmail.comและที่อยู่ที่ไม่ดีตามลำดับ /var/mail/virtual/example.com/email/mailในตัวอย่างข้างต้นก็จะเป็น

ฉันยังเก็บรักษารายการโดเมนทั้งหมดในเซิร์ฟเวอร์ไว้/etc/valiasesแต่จะเพิ่มเติมในภายหลัง

postfix

นี่เป็นส่วนที่ง่ายของการตั้งค่า เพียงติดตั้งpostfixแพ็คเกจ

เอ็กซิม

ติดตั้ง Exim ด้วยapt-get install exim4 exim4-base exim4-config exim4-daemon-heavyเมื่อติดตั้งแล้วคุณจะต้องแก้ไขการกำหนดค่าเริ่มต้น exim เพื่อแทนที่หรือเพิ่มค่าต่อไปนี้:

domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes

(บรรทัดเหล่านี้จะปรากฏในส่วนต่าง ๆ ของไฟล์แทนที่แต่ละบรรทัด)

เมื่อสร้างการกำหนดค่า exim ใหม่เสร็จสมบูรณ์ด้วยupdate-exim4.confนี่จะเป็นการสรุปการเปลี่ยนแปลงที่จำเป็นสำหรับ Exim

Courier

ติดตั้ง Courier กับcourier-baseนี้ควรติดตั้งcourier-authdaemon, courier-authlib*, courier-imap*, courier-pop*, courieruserinfo,courier-ssl

จริงๆแล้วมีการกำหนดค่าไม่มากนอกมาตรฐาน คุณเพียงแค่ต้องสร้างฐานข้อมูลผู้ใช้

บัญชี

Exim และ Courier ตรวจสอบสถานที่เพื่อดูว่าการเข้าสู่ระบบหรืออีเมลขาเข้านั้นถูกต้องหรือไม่ ตรวจสอบ Exim ถ้าโดเมนถูกระบุว่าเป็นชื่อโฮสต์ท้องถิ่นหรือถ้าโดเมนที่อยู่ในหรือถ้าโดเมนที่อยู่ใน/var/mail/virtual/etc/valiases

การสร้างบัญชีอีเมล

ในที่สุดฉันก็สร้างเครื่องมือหลายอย่างเพื่อปรับปรุงกระบวนการนี้ - แต่การเพิ่มผู้ใช้ใหม่ไปที่:

mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/

จากนั้นเพิ่มที่อยู่ใน courier userdb - เพื่อให้พวกเขาสามารถเข้าสู่ระบบ

userdb email@example.com set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail

ตรวจสอบให้แน่ใจว่าได้แทนที่ค่าที่เหมาะสม นอกจากนี้ - uidและgid ต้องเป็นรหัสผู้ใช้ / กลุ่มที่เป็นตัวเลขสำหรับผู้ใช้จดหมาย

userdbpw -md5 | userdb email@example.com set systempw

สิ่งนี้จะแจ้งให้คุณใส่รหัสผ่านป้อนรหัสที่คุณต้องการใช้สำหรับบัญชี

makeuserdb

สุดท้ายสร้างไฟล์แฮช / เงาของผู้ใช้ รีสตาร์ท Courier และทดสอบว่าการเปลี่ยนแปลงของคุณทำงานหรือไม่:

authtest email@example.com

ควรผลิตสิ่งที่คล้ายกับ

Authentication succeeded.

     Authenticated: email@example.com  (uid 8, gid 8)
    Home Directory: /var/mail/virtual/example.com/email
           Maildir: /var/mail/virtual/example.com/email/mail
             Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
           Options: (none)

หากคุณเห็น "การรับรองความถูกต้องล้มเหลว: ไม่อนุญาตให้ดำเนินการ" ให้แก้ไข / etc / courier / authdaemonrc และเพิ่ม authuserdb ลงในบรรทัด authmodulelist

หลังจากยืนยันการทดสอบทั้งหมดแล้วให้เริ่มบริการต่าง ๆ ที่เกี่ยวข้อง ( courier-authdaemon, exim4) เปิดพอร์ต 143, 25, 586, 495, 110 และตั้งค่าบัญชีในโปรแกรมรับส่งเมลที่คุณชื่นชอบ

การสร้างอีเมลแทน

สำหรับแต่ละโดเมนคุณควรสร้างไฟล์ใน/etc/valiases(สร้างหากไม่มีอยู่) อย่างน้อยบรรทัดต่อไปนี้:

*: :fail: No user at this address.

สิ่งนี้บอกว่า: ถ้าจดหมายขาเข้าไม่ตรงกับบัญชีอีเมลใด ๆ ที่ฉันมีบันทึกไว้ - จดหมายนั้นควรจะล้มเหลวและเด้งด้วยข้อความ: "ไม่มีผู้ใช้ที่อยู่นี้" ดังนั้นจดหมายทั้งหมดที่ส่งไปบอกว่าfoo@example.comจะถูกตีกลับเป็นความล้มเหลว

อย่างไรก็ตามเรามีที่อยู่อีเมลเพียงไม่กี่แห่งที่เราต้องการรักษาไว้ที่อื่น - เช่น example@gmail.com - เพื่อให้เราต้องสร้าง/etc/valiases/example.comและเนื้อหาของไฟล์ควรเป็นดังนี้:

fwd: example@gmail.com
*: :fail: No user at this address.

ด้วยวิธีนี้แม้ว่า fwd@example.com จะไม่ตรงกับบัญชีอีเมลใด ๆ บนเซิร์ฟเวอร์ แต่จะตรงกับใน/etc/valiasesไฟล์และอีเมลจะถูกส่งต่อไปยัง example@gmail.com - อย่างไรก็ตาม foo@example.com จะยังคงล้มเหลวด้วย ข้อความ "ไม่มีผู้ใช้ที่อยู่นี้"


11
สิ่งนี้มาพร้อมกับหมายเลข ISBN หรือไม่
Wesley

1
@WesleyDavid ฉันไม่คิดว่าประวัติทุบตีของฉันจะปรากฏขึ้นในฐานะ ISBN :)
249262 Marco Ceppi

เพียงแค่ติดตามสิ่งเหล่านี้ - ได้รับความนิยมอย่างมาก - ฉันได้แก้ไขด้านบนเพื่อให้ครอบคลุมข้อผิดพลาดที่ฉันได้รับจากบรรทัดตรวจสอบอัตโนมัติ
Darren Greaves

@DarrenGreaves ขอบคุณ! ฉันดีใจที่มันช่วยและขอบคุณสำหรับการอัปเดต!
Marco Ceppi

ฉันกำลังดิ้นรนเพื่อให้ได้งานทั้งหมด - ฉันได้รับการกำหนดเส้นทาง valiases ให้ทำงานเมื่อฉันเพิ่ม (แก้ไขเส้นทาง) ไฟล์การกำหนดเส้นทาง 350 จากdebian-administr.org/articles/140 - สิ่งที่โดเมนเสมือนไม่ทำงานเลย - คุณต้องเพิ่มไฟล์การกำหนดเส้นทางหรือไม่? ขอบคุณ
Darren Greaves

14

sudo tasksel install mail-serverวิธีที่ง่ายที่สุดคือการทำงาน ที่จะให้เซิร์ฟเวอร์อีเมลที่มีค่าเริ่มต้นมีสติ สิ่งที่คุณต้องทำคือตอบคำถามสองสามข้อ เห็นได้ชัดว่าคุณยังคงสามารถกำหนดค่าด้วยตนเองได้ในภายหลังหากจำเป็น แต่ในกรณีส่วนใหญ่จะไม่เป็นเช่นนั้น เพียงทำตามคำแนะนำบนหน้าจอและคุณก็ควรจะปรับ

การอ่านเกี่ยวกับการจัดการบริการอีเมลนั้นเป็นสิ่งที่แนะนำได้อย่างแน่นอน

การอ้างอิงอย่างเป็นทางการ:


มีวิธีขี้เกียจที่จะดูว่าจะทำอะไร (แพ็คเกจที่จะติดตั้งการตั้งค่าเริ่มต้น)? โดยขี้เกียจฉันหมายถึงโดยไม่ต้องติดตั้งตัวเอง
Javier Rivera

@ จาเวียร์คุณสามารถดูเนื้อหาที่ติดตั้งโดยการเรียกใช้sudo tasksel --task-packages mail-server
Marco Ceppi

การกำหนดค่าที่เก็บไว้ใน MySQL, ไม่มีการป้องกันสแปมไม่ป้องกันไวรัส ... มันไม่มีประโยชน์จริงๆสำหรับเรา :(.
ฮาเวียร์ริเวร่า


4

เพิ่งทำสิ่งนี้ด้วยตัวคุณเองคุณต้องการ postfix และในกรณีของฉันฉันต้องการเซิร์ฟเวอร์ imap ด้วยเพื่อที่ฉันจะสามารถใช้ไคลเอนต์ gui ที่ดี (ไม่พูดถึงชื่อใด ๆ ) บนเครื่องอื่น ฉันใช้เอกสารเหล่านี้:

postfix

Dovecot (imap และ pop3)

มันค่อนข้างง่ายจริง ๆ แล้วเริ่มต้นใช้งานในอีกไม่กี่นาทีและรับอีเมล นี้ยังเป็นประโยชน์ในการตรวจสอบว่าทุกอย่างที่มีการตั้งค่า ok pingability

โอ้และแน่นอนคุณจะต้องตั้งค่ารายการ DNS ของคุณอย่างถูกต้องดังต่อไปนี้ (ขึ้นอยู่กับการตั้งค่าที่เหมาะกับฉัน):

name   type   content
  @      A     ???.???.??.??    
mail     A     ???.???.??.??

และ

         MX Records
Name                 Priority
mail.mydomain.com.      1
mail2.mydomain.com.     2

จดบันทึกการหยุดแบบเต็มเมื่อสิ้นสุดเมลเซิร์ฟเวอร์และใส่ที่อยู่ IP และชื่อโดเมนของคุณตามความเหมาะสม

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