ติดตั้ง Mail Server แบบสมบูรณ์ด้วย Postfix และ Webmail ใน Debian 9
บทช่วยสอนนี้จะแนะนำวิธีการติดตั้งและกำหนดค่าเมลเซิร์ฟเวอร์ที่สมบูรณ์ด้วย Postfix ในรุ่น Debian 9 นอกจากนี้ ยังครอบคลุมถึงวิธีกำหนดค่ากล่องจดหมายของบัญชีโดยใช้ Dovecot เพื่อดึงและเขียนอีเมลผ่านโปรโตคอล IMAP ผู้ใช้จะใช้อินเทอร์เฟซ Rainloop Webmail เป็นตัวแทนผู้ใช้เมลในการจัดการเมล
ความต้องการ
- การติดตั้ง Debian 9 ขั้นต่ำ
- ที่อยู่ IP แบบคงที่ที่กำหนดค่าไว้สำหรับอินเทอร์เฟซเครือข่าย
- ชื่อโดเมนท้องถิ่นหรือจดทะเบียนสาธารณะ
ในบทช่วยสอนนี้ เราจะใช้บัญชีโดเมนส่วนตัวสำหรับการตั้งค่าเซิร์ฟเวอร์อีเมลที่กำหนดค่าผ่านไฟล์ /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
นั่นคือทั้งหมด! คุณได้ติดตั้งและกำหนดค่าเมลเซิร์ฟเวอร์ที่สถานที่ของคุณเรียบร้อยแล้วเพื่อให้ผู้ใช้ในพื้นที่สามารถสื่อสารผ่านอีเมลได้ อย่างไรก็ตาม การกำหนดค่าเมลประเภทนี้ไม่มีการรักษาความปลอดภัย แต่อย่างใด และขอแนะนำให้ปรับใช้กับการตั้งค่าเล็กๆ น้อยๆ ในระบบและเครือข่ายที่อยู่ภายใต้การควบคุมทั้งหมดของคุณเท่านั้น