ค้นหาเว็บไซต์

ติดตั้ง Mail Server แบบสมบูรณ์ด้วย Postfix และ Webmail ใน Debian 9


บทช่วยสอนนี้จะแนะนำวิธีการติดตั้งและกำหนดค่าเมลเซิร์ฟเวอร์ที่สมบูรณ์ด้วย Postfix ในรุ่น Debian 9 นอกจากนี้ ยังครอบคลุมถึงวิธีกำหนดค่ากล่องจดหมายของบัญชีโดยใช้ Dovecot เพื่อดึงและเขียนอีเมลผ่านโปรโตคอล IMAP ผู้ใช้จะใช้อินเทอร์เฟซ Rainloop Webmail เป็นตัวแทนผู้ใช้เมลในการจัดการเมล

ความต้องการ

  1. การติดตั้ง Debian 9 ขั้นต่ำ
  2. ที่อยู่ IP แบบคงที่ที่กำหนดค่าไว้สำหรับอินเทอร์เฟซเครือข่าย
  3. ชื่อโดเมนท้องถิ่นหรือจดทะเบียนสาธารณะ

ในบทช่วยสอนนี้ เราจะใช้บัญชีโดเมนส่วนตัวสำหรับการตั้งค่าเซิร์ฟเวอร์อีเมลที่กำหนดค่าผ่านไฟล์ /etc/hosts เท่านั้น โดยไม่มีเซิร์ฟเวอร์ DNS ที่เกี่ยวข้องกับการจัดการการแก้ไข DNS

ขั้นตอนที่ 1: การกำหนดค่าเริ่มต้นสำหรับเซิร์ฟเวอร์อีเมล Postfix บน Debian

1. ในขั้นตอนแรก ให้เข้าสู่ระบบเครื่องของคุณด้วยบัญชีที่มีสิทธิ์ใช้งานรูทหรือโดยตรงกับผู้ใช้รูท และตรวจสอบให้แน่ใจว่าระบบ Debian ของคุณทันสมัยด้วยแพตช์รักษาความปลอดภัย ซอฟต์แวร์ และแพ็คเกจล่าสุด โดยการออกคำสั่งต่อไปนี้

apt-get update 
apt-get upgrade 

2. ในขั้นตอนถัดไปให้ติดตั้งแพ็คเกจซอฟต์แวร์ต่อไปนี้ที่จะใช้สำหรับการดูแลระบบ โดยใช้คำสั่งต่อไปนี้

apt-get install curl net-tools bash-completion wget lsof nano

3. จากนั้น เปิดไฟล์ /etc/host.conf เพื่อแก้ไขด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ และเพิ่มบรรทัดต่อไปนี้ที่จุดเริ่มต้นของไฟล์เพื่อให้การแก้ไข DNS อ่านไฟล์โฮสต์ก่อน

order hosts,bind
multi on

4. จากนั้น ตั้งค่าเครื่อง FQDN และเพิ่มชื่อโดเมนและ FQDN ระบบของคุณลงในไฟล์ /etc/hosts ใช้ที่อยู่ IP ระบบของคุณเพื่อแก้ไขชื่อโดเมนและ FQDN ดังที่แสดงในภาพหน้าจอด้านล่าง

แทนที่ที่อยู่ IP และโดเมนตามลำดับ หลังจากนั้นให้รีบูทเครื่องเพื่อใช้ชื่อโฮสต์อย่างถูกต้อง

hostnamectl set-hostname mail.linux-console.net
echo "192.168.0.102 linux-console.net mail.linux-console.net" >> /etc/hosts
init 6

5. หลังจากรีบูต ให้ตรวจสอบว่า ชื่อโฮสต์ ได้รับการกำหนดค่าอย่างถูกต้องหรือไม่โดยใช้ชุดคำสั่งต่อไปนี้ ชื่อโดเมน, FQDN, ชื่อโฮสต์ และที่อยู่ IP ของระบบควรส่งคืนโดยคำสั่งชื่อโฮสต์

hostname
hostname -s
hostname -f
hostname -A
hostname -i
cat /etc/hostname 

6. นอกจากนี้ ให้ทดสอบว่าโดเมนตอบกลับคำค้นหาในเครื่องอย่างถูกต้องหรือไม่โดยใช้คำสั่งด้านล่าง โปรดทราบว่าโดเมนจะไม่เล่นซ้ำกับการสืบค้นระยะไกลที่ออกโดยระบบอื่นในเครือข่ายของคุณ เนื่องจากเราไม่ได้ใช้เซิร์ฟเวอร์ DNS

อย่างไรก็ตาม โดเมนควรตอบกลับจากระบบอื่น หากคุณเพิ่มชื่อโดเมนลงในไฟล์ /etc/hosts แต่ละไฟล์ด้วยตนเอง นอกจากนี้ โปรดทราบว่าการแก้ไข DNS สำหรับโดเมนที่เพิ่มลงในไฟล์ /etc/hosts จะไม่ทำงานผ่านคำสั่งโฮสต์ nslookup หรือ dig

getent ahosts mail.linux-console.net
ping linux-console.net
ping mail.linux-console.net

ขั้นตอนที่ 2: ติดตั้งเซิร์ฟเวอร์จดหมาย Postfix บน Debian

7. ซอฟต์แวร์ที่สำคัญที่สุดที่จำเป็นสำหรับเซิร์ฟเวอร์อีเมลในการทำงานอย่างถูกต้องคือตัวแทน MTA MTA เป็นซอฟต์แวร์ที่สร้างขึ้นในสถาปัตยกรรมเซิร์ฟเวอร์ไคลเอ็นต์ ซึ่งมีหน้าที่รับผิดชอบในการถ่ายโอนอีเมลระหว่างเซิร์ฟเวอร์อีเมล

ในคู่มือนี้ เราจะใช้ Postfix เป็นตัวแทนการโอนจดหมาย หากต้องการติดตั้ง postfix ใน Debian จากแหล่งเก็บข้อมูลอย่างเป็นทางการให้รันคำสั่งต่อไปนี้

apt-get install postfix

8. ในระหว่างกระบวนการติดตั้ง Postfix คุณจะถูกถามคำถามหลายข้อ ในข้อความแจ้งแรก ให้เลือกตัวเลือก ไซต์อินเทอร์เน็ต เป็นประเภททั่วไปสำหรับการกำหนดค่า Postfix และกดปุ่ม [enter] เพื่อดำเนินการต่อ จากนั้นเพิ่มชื่อโดเมนของคุณลงในชื่อเมลระบบ เช่น แสดงในภาพหน้าจอต่อไปนี้

ขั้นตอนที่ 3: กำหนดค่าเซิร์ฟเวอร์เมล Postfix บน Debian

9. ถัดไป สำรองไฟล์การกำหนดค่าหลักของ Postfix และกำหนดค่า Postfix สำหรับโดเมนของคุณโดยใช้คำสั่งต่อไปนี้

cp /etc/postfix/main.cf{,.backup}
nano /etc/postfix/main.cf

ตอนนี้กำหนดค่า Postfix ในไฟล์ main.cf ตามที่แสดง

See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP
biff = no
appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no

See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
fresh installs.
compatibility_level = 2

TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.debian.lan

mydomain = debian.lan

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myorigin = /etc/mailname
myorigin = $mydomain

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4

home_mailbox = Maildir/

SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

แทนที่ตัวแปร myhostname, mydomain และ mynetworks เพื่อให้ตรงกับการกำหนดค่าของคุณเอง

คุณสามารถเรียกใช้คำสั่ง postconf -n เพื่อดัมพ์ไฟล์การกำหนดค่าหลักของ Postfix และตรวจสอบข้อผิดพลาดในที่สุด ดังที่แสดงในภาพหน้าจอด้านล่าง

postconf -n

10. หลังจากกำหนดค่าทั้งหมดแล้ว ให้รีสตาร์ท Postfix daemon เพื่อใช้การเปลี่ยนแปลงและตรวจสอบว่าบริการกำลังทำงานอยู่หรือไม่โดยการตรวจสอบว่าบริการหลัก Postfix เชื่อมโยงกับพอร์ต 25 หรือไม่โดยการเรียกใช้ netstat สั่งการ.

systemctl restart postfix
systemctl status postfix
netstat -tlpn

ขั้นตอนที่ 3: ทดสอบเซิร์ฟเวอร์เมล Postfix บน Debian

11. เพื่อทดสอบว่า postfix สามารถจัดการการถ่ายโอนเมลได้หรือไม่ ให้ติดตั้งแพ็คเกจ mailutils ก่อนโดยใช้คำสั่งต่อไปนี้

apt-get install mailutils

12. ถัดไป โดยใช้ยูทิลิตีบรรทัดคำสั่งของเมล ส่งอีเมลไปยังบัญชีรูทและตรวจสอบว่าเมลถูกส่งสำเร็จหรือไม่โดยออกคำสั่งด้านล่างเพื่อตรวจสอบคิวเมลและแสดงรายการเนื้อหาของรูท ไดเรกทอรีหลักของ Maildir

echo "mail body"| mail -s "test mail" root
mailq
mail
ls Maildir/
ls Maildir/new/
cat Maildir/new/[TAB]

13. คุณยังสามารถตรวจสอบได้ว่าบริการ postfix จัดการเมลในลักษณะใด โดยการตรวจสอบเนื้อหาของไฟล์บันทึกเมลโดยใช้คำสั่งต่อไปนี้

tailf /var/log/mail.log

ขั้นตอนที่ 4: ติดตั้งและกำหนดค่า Dovecot IMAP บน Debian

14. ตัวแทนจัดส่งจดหมายที่เราใช้ในคู่มือนี้เพื่อส่งข้อความอีเมลไปยังกล่องจดหมายของผู้รับในพื้นที่คือ Dovecot IMAP IMAP เป็นโปรโตคอลที่ทำงานบนพอร์ต 143 และ 993 (SSL) ซึ่งมีหน้าที่ในการอ่าน ลบ หรือ ย้ายอีเมลไปยังไคลเอนต์อีเมลหลายตัว

โปรโตคอล IMAP ยังใช้การซิงโครไนซ์เพื่อให้แน่ใจว่าสำเนาของแต่ละข้อความจะถูกบันทึกไว้บนเซิร์ฟเวอร์ และอนุญาตให้ผู้ใช้สร้างหลายไดเร็กทอรีบนเซิร์ฟเวอร์และย้ายเมลไปยังไดเร็กทอรีนี้เพื่อจัดเรียงอีเมล

นี่ไม่ใช่กรณีของโปรโตคอล POP3 โปรโตคอล POP3 จะไม่อนุญาตให้ผู้ใช้สร้างหลายไดเรกทอรีบนเซิร์ฟเวอร์เพื่อจัดเรียงอีเมลของคุณ คุณมีเพียงโฟลเดอร์กล่องจดหมายสำหรับจัดการจดหมาย

หากต้องการติดตั้งเซิร์ฟเวอร์หลัก Dovecot และแพ็คเกจ Dovecot IMAP บน Debian ให้รันคำสั่งต่อไปนี้

apt install dovecot-core dovecot-imapd

15. หลังจากติดตั้ง Dovecot ในระบบของคุณแล้ว ให้เปิดไฟล์ dovecot ด้านล่างเพื่อแก้ไขและทำการเปลี่ยนแปลงต่อไปนี้ ขั้นแรก ให้เปิดไฟล์ /etc/dovecot/dovecot.conf ค้นหาและยกเลิกการใส่เครื่องหมายข้อคิดเห็นในบรรทัดต่อไปนี้:

listen = *, ::

16. จากนั้น เปิด /etc/dovecot/conf.d/10-auth.conf เพื่อแก้ไข และค้นหาและเปลี่ยนบรรทัดด้านล่างให้มีลักษณะเหมือนในข้อความที่ตัดตอนมาด้านล่าง

disable_plaintext_auth = no
auth_mechanisms = plain login

17. เปิดไฟล์ /etc/dovecot/conf.d/10-mail.conf และเพิ่มบรรทัดต่อไปนี้เพื่อใช้ตำแหน่ง Maildir แทน Mbox รูปแบบเพื่อจัดเก็บอีเมล

mail_location = maildir:~/Maildir

18. ไฟล์สุดท้ายที่ต้องแก้ไขคือ /etc/dovecot/conf.d/10-master.conf ค้นหาบล็อก Postfix smtp-auth ที่นี่ และทำการเปลี่ยนแปลงต่อไปนี้:

Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }

19. หลังจากที่คุณได้ทำการเปลี่ยนแปลงข้างต้นทั้งหมดแล้ว ให้รีสตาร์ท Dovecot daemon เพื่อให้สอดคล้องกับการเปลี่ยนแปลง ตรวจสอบสถานะและตรวจสอบว่า Dovecot เชื่อมโยงกับพอร์ต 143 หรือไม่ โดยออกคำสั่งด้านล่าง

systemctl restart dovecot.service 
systemctl status dovecot.service 
netstat -tlpn

20. ทดสอบว่าเมลเซิร์ฟเวอร์ทำงานอย่างถูกต้องหรือไม่โดยการเพิ่มบัญชีผู้ใช้ใหม่ในระบบและใช้คำสั่ง telnet หรือ netcat เพื่อเชื่อมต่อกับ เซิร์ฟเวอร์ SMTP และส่งจดหมายใหม่ไปยังผู้ใช้ที่เพิ่มใหม่ ดังที่แสดงในข้อความที่ตัดตอนมาด้านล่าง

adduser matie
nc localhost 25
ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit

21. ตรวจสอบว่าจดหมายมาถึงกล่องจดหมายของผู้ใช้ใหม่หรือไม่โดยแสดงรายการเนื้อหาของโฮมไดเร็กตอรี่ของผู้ใช้ตามที่แสดงในภาพหน้าจอด้านล่าง

ls /home/test_mail/Maildir/new/

22. นอกจากนี้ คุณยังสามารถเชื่อมต่อกับกล่องจดหมายของผู้ใช้จากบรรทัดคำสั่งผ่านโปรโตคอล IMAP ดังที่แสดงในข้อความที่ตัดตอนมาด้านล่าง จดหมายใหม่ควรแสดงอยู่ในกล่องจดหมายของผู้ใช้

nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT

ขั้นตอนที่ 5: ติดตั้งและกำหนดค่าเว็บเมลใน Debian

23. ผู้ใช้จะจัดการอีเมลของตนผ่านไคลเอนต์ Rainloop Webmail ก่อนที่จะติดตั้งตัวแทนผู้ใช้เมล Rainloop ก่อนอื่นให้ติดตั้งเซิร์ฟเวอร์ Apache HTTP และโมดูล PHP ต่อไปนี้ที่ Rainloop ต้องการ โดยใช้คำสั่งต่อไปนี้

apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml

24. หลังจากติดตั้งเว็บเซิร์ฟเวอร์ Apache แล้ว ให้เปลี่ยนเส้นทางไดเรกทอรีเป็นไดเรกทอรี /var/www/html/ จากนั้นลบไฟล์ index.html และออกคำสั่งต่อไปนี้เพื่อติดตั้ง Rainloop Webmail

cd /var/www/html/
rm index.html 
curl -sL https://repository.rainloop.net/installer.php | php

25. หลังจากติดตั้งไคลเอนต์ Rainloop Webmail ในระบบแล้ว ให้นำทางไปยังที่อยู่ IP โดเมนของคุณ และเข้าสู่ระบบอินเทอร์เฟซเว็บของผู้ดูแลระบบ Rainloop ด้วยข้อมูลรับรองเริ่มต้นต่อไปนี้:

http://192.168.0.102/?admin
User: admin
Password: 12345

26. ไปที่เมนู โดเมน กดปุ่ม เพิ่มโดเมน และเพิ่มการตั้งค่าชื่อโดเมนของคุณดังที่แสดงในภาพหน้าจอด้านล่าง

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

หลังจากที่คุณเข้าสู่ระบบเว็บเมล Rainloop สำเร็จแล้ว คุณจะเห็นอีเมลที่ส่งก่อนหน้านี้จากบรรทัดคำสั่งไปยังโฟลเดอร์กล่องจดหมายของคุณ

http://192.168.0.102
User: [email 
Pass: the matie password

27. หากต้องการเพิ่มปัญหาผู้ใช้ใหม่ useradd คำสั่งด้วยแฟล็ก -m เพื่อสร้างโฮมไดเร็กตอรี่ของผู้ใช้ แต่ก่อนอื่นตรวจสอบให้แน่ใจว่าคุณได้กำหนดค่าตัวแปรเส้นทาง Maildir สำหรับผู้ใช้ทุกคนด้วยคำสั่งต่อไปนี้

echo 'export MAIL=$HOME/Maildir' >> /etc/profile
useradd -m user3
passwd user3

28. หากคุณต้องการเปลี่ยนเส้นทางอีเมลของรูททั้งหมดไปยังบัญชีเมลในเครื่องที่ระบุจากระบบ ให้รันคำสั่งด้านล่าง เมลทั้งหมดที่เปลี่ยนเส้นทางหรือปลายทางไปยังบัญชีรูทจะถูกส่งต่อไปยังผู้ใช้เมลของคุณดังที่แสดงในภาพด้านล่าง

echo "root: test_mail" >> /etc/aliases
newaliases

นั่นคือทั้งหมด! คุณได้ติดตั้งและกำหนดค่าเมลเซิร์ฟเวอร์ที่สถานที่ของคุณเรียบร้อยแล้วเพื่อให้ผู้ใช้ในพื้นที่สามารถสื่อสารผ่านอีเมลได้ อย่างไรก็ตาม การกำหนดค่าเมลประเภทนี้ไม่มีการรักษาความปลอดภัย แต่อย่างใด และขอแนะนำให้ปรับใช้กับการตั้งค่าเล็กๆ น้อยๆ ในระบบและเครือข่ายที่อยู่ภายใต้การควบคุมทั้งหมดของคุณเท่านั้น