Faith Evans feat. Stevie J – "A Minute" [Official Music Video]
สารบัญ:
- ข้อกำหนดเบื้องต้น
- ติดตั้ง Redis
- ติดตั้ง Unbound
- ติดตั้ง Rspamd
- กำหนดค่า Rspamd
- กำหนดค่า Nginx
- กำหนดค่า Postfix
- กำหนดค่า Dovecot
- สร้างคีย์ DKIM
- การตั้งค่า DNS
- ข้อสรุป
นี่เป็นส่วนที่สามของการตั้งค่าและกำหนดค่าเมลเซิร์ฟเวอร์ของเรา ในบทช่วยสอนนี้เราจะทำการติดตั้งและกำหนดค่าระบบกรองสแปม Rspamd และการรวมเข้ากับเซิร์ฟเวอร์อีเมลของเราซึ่งสร้างระเบียน DKIM และ DMARC DNS
คุณอาจถามว่าทำไมเราถึงเลือกไปกับ Rspamd และไม่ใช่กับ Spamassassin Rspamd นั้นได้รับการดูแลและเขียนใน C มากขึ้นและเร็วกว่า Spamassassin ซึ่งเขียนด้วยภาษา Perl อีกเหตุผลหนึ่งคือ Rspamd มาพร้อมกับโมดูลการลงนาม DKIM ดังนั้นเราจะไม่ต้องใช้ซอฟต์แวร์อื่นเพื่อลงชื่ออีเมลขาออกของเรา
ข้อกำหนดเบื้องต้น
ก่อนดำเนินการกับบทช่วยสอนนี้ต่อให้แน่ใจว่าคุณได้เข้าสู่ระบบในฐานะผู้ใช้ที่มีสิทธิ์ sudo
ติดตั้ง Redis
Redis จะถูกใช้เป็นที่เก็บข้อมูลและระบบแคชโดย Rspamd เพื่อติดตั้งเพียงแค่เรียกใช้:
ติดตั้ง Unbound
Unbound เป็นตัวแก้ไข DNS ที่ตรวจสอบความถูกต้องซ้ำและแคชอย่างปลอดภัย
วัตถุประสงค์หลักของการติดตั้งบริการนี้คือเพื่อลดจำนวนคำขอ DNS ภายนอก ขั้นตอนนี้เป็นทางเลือกและสามารถข้ามได้
sudo apt update
sudo apt install unbound
การตั้งค่า Unbound เริ่มต้นควรเพียงพอสำหรับเซิร์ฟเวอร์ส่วนใหญ่
ในการตั้งค่า unbound เป็นตัวแก้ไข DNS หลักของเซิร์ฟเวอร์ให้รันคำสั่งต่อไปนี้:
sudo echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u
หากคุณไม่ได้ใช้
resolvconf
คุณต้องแก้ไขไฟล์
/etc/resolv.conf
ด้วยตนเอง
ติดตั้ง Rspamd
เราจะติดตั้ง Rspamd รุ่นเสถียรล่าสุดจากแหล่งเก็บข้อมูลอย่างเป็นทางการ
เริ่มต้นด้วยการติดตั้งแพ็คเกจที่จำเป็น:
sudo apt install software-properties-common lsb-release
sudo apt install lsb-release wget
เพิ่มที่เก็บคีย์ GPG ลงในพวงกุญแจ apt source ของคุณโดยใช้คำสั่ง wget ต่อไปนี้:
wget -O- https://rspamd.com/apt-stable/gpg.key | sudo apt-key add -
เปิดใช้งานที่เก็บ Rspamd โดยเรียกใช้:
echo "deb http://rspamd.com/apt-stable/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/rspamd.list
เมื่อที่เก็บถูกเปิดใช้งานให้อัพเดตดัชนีแพ็กเกจและติดตั้ง Rspamd โดยใช้คำสั่งต่อไปนี้:
sudo apt update
sudo apt install rspamd
กำหนดค่า Rspamd
แทนที่จะแก้ไขไฟล์กำหนดค่าหุ้นเราจะสร้างไฟล์ใหม่ในไดเรกทอรี
/etc/rspamd/local.d/local.d/
ซึ่งจะเขียนทับการตั้งค่าเริ่มต้น
โดยค่าเริ่มต้น
normal worker
ของ Rspamd
normal worker
งานที่สแกนข้อความอีเมลฟังบนอินเตอร์เฟสทั้งหมดบนพอร์ต 11333 สร้างไฟล์ต่อไปนี้เพื่อกำหนดค่าผู้ปฏิบัติงานปกติ Rspamd ให้รับฟังเฉพาะอินเตอร์เฟส localhost เท่านั้น:
bind_socket = "127.0.0.1:11333";
ผู้
proxy worker
รับฟังพอร์ต 11332 และรองรับโปรโตคอล milter เพื่อให้ Postfix สื่อสารกับ Rspamd เราต้องเปิดใช้งานโหมด milter:
bind_socket = "127.0.0.1:11332"; milter = yes; timeout = 120s; upstream "local" { default = yes; self_scan = yes; }
ต่อไปเราต้องตั้งรหัสผ่านสำหรับเซิร์ฟเวอร์
controller worker
ซึ่งให้การเข้าถึง Rspamd เว็บอินเตอร์เฟส ในการสร้างรหัสผ่านที่เข้ารหัสให้รัน:
rspamadm pw --encrypt -p P4ssvv0rD
ผลลัพธ์ควรมีลักษณะดังนี้:
$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb
อย่าลืมเปลี่ยนรหัสผ่าน (
P4ssvv0rD
) เป็นสิ่งที่ปลอดภัยยิ่งขึ้น
คัดลอกรหัสผ่านจากเทอร์มินัลของคุณและวางลงในไฟล์กำหนดค่า:
/etc/rspamd/local.d/worker-controller.inc
password = "$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb";
ต่อมาเราจะกำหนดค่า Nginx เป็น reverse proxy ไปยังเว็บเซิร์ฟเวอร์ผู้ควบคุมคอนโทรลเลอร์เพื่อให้เราสามารถเข้าถึงเว็บอินเตอร์เฟส Rspamd ได้
ตั้งค่า Redis เป็น backend สำหรับสถิติ Rspamd โดยเพิ่มบรรทัดต่อไปนี้ในไฟล์
classifier-bayes.conf
:
servers = "127.0.0.1"; backend = "redis";
เปิดไฟล์
milter_headers.conf
และตั้งค่าส่วนหัว milter:
use =;
คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับส่วนหัวของ milter ได้ที่นี่
ในที่สุดเริ่มบริการ Rspamd ใหม่เพื่อให้การเปลี่ยนแปลงมีผล:
กำหนดค่า Nginx
ในส่วนแรกของชุดนี้เราสร้างบล็อกเซิร์ฟเวอร์ Nginx สำหรับอินสแตนซ์ PostfixAdmin
เปิดไฟล์คอนฟิกูเรชัน Nginx และเพิ่มคำสั่งตำแหน่งต่อไปนี้หนึ่งรายการที่ไฮไลต์ด้วยสีเหลือง:
/etc/nginx/sites-enabled/mail.linuxize.com.conf
… location /rspamd { proxy_pass http://127.0.0.1:11334/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }…
โหลดบริการ Nginx อีกครั้งเพื่อให้การเปลี่ยนแปลงมีผล:
sudo systemctl reload nginx
ตรงไปที่
https://mail.linuxize.com/rspamd/
ป้อนรหัสผ่านที่คุณสร้างไว้ก่อนหน้านี้โดยใช้คำสั่ง
rspamadm pw
และคุณจะพบกับเว็บอินเตอร์เฟส Rspamd
กำหนดค่า Postfix
เราจำเป็นต้องกำหนดค่า Postfix เพื่อใช้ Rspamd milter
รันคำสั่งต่อไปนี้เพื่ออัพเดตไฟล์คอนฟิกูเรชันหลักของ Postfix:
sudo postconf -e "milter_protocol = 6"
sudo postconf -e "milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}"
sudo postconf -e "milter_default_action = accept"
sudo postconf -e "smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"
เริ่มบริการ Postfix ใหม่เพื่อให้การเปลี่ยนแปลงมีผล:
sudo systemctl restart postfix
กำหนดค่า Dovecot
เราได้ติดตั้งและกำหนดค่า Dovecot ไว้แล้วในส่วนที่สองของชุดนี้และตอนนี้เราจะติดตั้งโมดูลกรอง
sieve
และรวม Dovecot กับ Rspamd
เริ่มต้นด้วยการติดตั้งโมดูลตัวกรอง Dovecot:
sudo apt install dovecot-sieve dovecot-managesieved
เมื่อติดตั้งแพ็กเกจแล้วให้เปิดไฟล์ต่อไปนี้และแก้ไขบรรทัดที่เน้นสีเหลือง
/etc/dovecot/conf.d/20-lmtp.conf
… protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins sieve }…
/etc/dovecot/conf.d/20-imap.conf
… protocol imap {… mail_plugins = $mail_plugins imap_quota imap_sieve… }…
/etc/dovecot/conf.d/20-managesieve.conf
… service managesieve-login { inet_listener sieve { port = 4190 }… }… service managesieve { process_limit = 1024 }…
/etc/dovecot/conf.d/90-sieve.conf
plugin {… # sieve = file:~/sieve;active=~/.dovecot.sieve sieve_plugins = sieve_imapsieve sieve_extprograms sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve sieve = file:/var/mail/vmail/sieve/%d/%n/scripts;active=/var/mail/vmail/sieve/%d/%n/active-script.sieve imapsieve_mailbox1_name = Spam imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/report-spam.sieve imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Spam imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/report-ham.sieve sieve_pipe_bin_dir = /usr/bin sieve_global_extensions = +vnd.dovecot.pipe…. }
บันทึกและปิดไฟล์
สร้างไดเรกทอรีสำหรับสคริปต์ตะแกรง:
mkdir -p /var/mail/vmail/sieve/global
สร้างตัวกรองตะแกรงทั่วโลกเพื่อย้ายอีเมลที่ระบุว่าเป็นสแปมไปยังไดเรกทอรี
Spam
:
require; if anyof(header:contains "YES", header:contains "Yes", header:contains "*** SPAM ***") { fileinto:create "Spam"; stop; }
สคริปต์ตะแกรงสองสคริปต์ต่อไปนี้จะถูกเรียกใช้เมื่อใดก็ตามที่คุณย้ายอีเมลเข้าหรือออกจากไดเรกทอรี
Spam
:
require; pipe:copy "rspamc";
/var/mail/vmail/sieve/global/report-ham.sieve
require; pipe:copy "rspamc";
เริ่มบริการ Dovecot ใหม่เพื่อให้การเปลี่ยนแปลงมีผล:
sudo systemctl restart dovecot
รวบรวมสคริปต์ตะแกรงและตั้งค่าสิทธิ์ที่ถูกต้อง:
sievec /var/mail/vmail/sieve/global/report-ham.sieve
sudo chown -R vmail: /var/mail/vmail/sieve/
สร้างคีย์ DKIM
DomainKeys Identified Mail (DKIM) เป็นวิธีการตรวจสอบสิทธิ์อีเมลซึ่งจะเพิ่มลายเซ็นการเข้ารหัสให้กับส่วนหัวของข้อความขาออก อนุญาตให้ผู้รับตรวจสอบว่าอีเมลที่อ้างว่ามาจากโดเมนที่ระบุนั้นได้รับอนุญาตจากเจ้าของโดเมนนั้นแน่นอน วัตถุประสงค์หลักของสิ่งนี้คือเพื่อป้องกันข้อความอีเมลปลอมแปลง
เราสามารถมีคีย์ DKIM ที่แตกต่างกันสำหรับโดเมนทั้งหมดของเราและแม้กระทั่งหลายคีย์สำหรับโดเมนเดียว แต่เพื่อความง่ายของบทความนี้เราจะใช้คีย์ DKIM เดียวซึ่งในภายหลังสามารถใช้สำหรับโดเมนใหม่ทั้งหมดได้
สร้างไดเร็กทอรีใหม่เพื่อเก็บคีย์ DKIM และสร้างคีย์ DKIM ใหม่โดยใช้ยูทิลิตี
rspamadm
:
sudo mkdir /var/lib/rspamd/dkim/
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key | sudo tee -a /var/lib/rspamd/dkim/mail.pub
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key | sudo tee -a /var/lib/rspamd/dkim/mail.pub
ในตัวอย่างข้างต้นเราใช้
mail
เป็นตัวเลือก DKIM
ตอนนี้คุณควรมีไฟล์ใหม่สองไฟล์ในไดเร็กทอรี
/var/lib/rspamd/dkim/
mail.key
ซึ่งเป็นไฟล์กุญแจส่วนตัวของเราและ
mail.pub
ไฟล์ที่มีพับลิกคีย์ DKIM เราจะอัปเดตระเบียนโซน DNS ของเราในภายหลัง
ตั้งค่าความเป็นเจ้าของและสิทธิ์ที่ถูกต้อง:
sudo chown -R _rspamd: /var/lib/rspamd/dkim
sudo chmod 440 /var/lib/rspamd/dkim/*
ตอนนี้เราต้องบอก Rspamd ว่าจะค้นหาคีย์ DKIM ได้อย่างไรชื่อของตัวเลือกและบรรทัดสุดท้ายจะเปิดใช้งานการลงนาม DKIM สำหรับที่อยู่ผู้ส่งชื่อแทน ในการทำเช่นนั้นให้สร้างไฟล์ใหม่โดยมีเนื้อหาดังต่อไปนี้:
/etc/rspamd/local.d/dkim_signing.conf
selector = "mail"; path = "/var/lib/rspamd/dkim/$selector.key"; allow_username_mismatch = true;
Rspamd ยังสนับสนุนการลงชื่อสำหรับลายเซ็นที่ได้รับที่ได้รับห่วงโซ่ (ARC) คุณสามารถค้นหาข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลจำเพาะของ ARC ได้ที่นี่
Rspamd กำลังใช้โมดูล DKIM สำหรับจัดการกับลายเซ็น ARC เพื่อให้เราสามารถคัดลอกการกำหนดค่าก่อนหน้านี้:
sudo cp /etc/rspamd/local.d/dkim_signing.conf /etc/rspamd/local.d/arc.conf
เริ่มบริการ Rspamd ใหม่เพื่อให้การเปลี่ยนแปลงมีผล:
การตั้งค่า DNS
เราได้สร้างคู่คีย์ DKIM แล้วและตอนนี้เราจำเป็นต้องอัปเดตโซน DNS ของเรา คีย์สาธารณะ DKIM ถูกเก็บไว้ในไฟล์
mail.pub
เนื้อหาของไฟล์ควรมีลักษณะดังนี้:
cat /var/lib/rspamd/dkim/mail.pub
mail._domainkey IN TXT ("v=DKIM1; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4yl" "nVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB");
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB
นอกจากนี้เรายังจะสร้างการรับรองความถูกต้องของข้อความบนโดเมน (
DMARC
) ซึ่งออกแบบมาเพื่อบอกเซิร์ฟเวอร์ที่รับว่าจะรับอีเมลจากผู้ส่งรายใดหรือไม่ โดยทั่วไปจะช่วยปกป้องโดเมนของคุณจากการปลอมแปลงโดเมนโดยตรงและปรับปรุงชื่อเสียงของโดเมนของคุณ
เราจะใช้นโยบาย DMARC ต่อไปนี้:
_dmarc IN TXT "v=DMARC1; p=none; adkim=r; aspf=r;"
มาแบ่งระเบียน DMARC ด้านบน:
-
v=DMARC1
- นี่คือตัวระบุ DMARCp=none
- นี่เป็นการบอกผู้รับว่าจะทำอย่างไรกับข้อความที่ล้มเหลว DMARC ในกรณีของเรามันถูกตั้งค่าเป็นไม่มีซึ่งหมายถึงไม่ดำเนินการใด ๆ หากข้อความล้มเหลว DMARC นอกจากนี้คุณยังสามารถใช้ 'ปฏิเสธ' หรือquarantine
adkim=r
และaspf=r
- การจัดตำแหน่งDKIM
และSPF
,r
สำหรับการผ่อนคลายและs
สำหรับการเข้มงวดในกรณีของเราเราใช้การจัดตำแหน่งที่ผ่อนคลายสำหรับทั้ง DKIM และ SPF
เหมือนก่อนหน้านี้ถ้าคุณใช้เซิร์ฟเวอร์ Bind DNS ของคุณเองคุณเพียงแค่คัดลอกและวางข้อมูลลงในไฟล์โซนโดเมนของคุณและถ้าคุณใช้ผู้ให้บริการ DNS อื่นคุณต้องสร้างระเบียน TXT ด้วย
_dmarc
เป็นชื่อและ
v=DMARC1; p=none; adkim=r; aspf=r;
v=DMARC1; p=none; adkim=r; aspf=r;
เป็นค่า / เนื้อหา
อาจใช้เวลาสักครู่ก่อนที่การเปลี่ยนแปลง DNS จะเผยแพร่ คุณสามารถตรวจสอบว่าบันทึกได้แพร่กระจายโดยใช้คำสั่งขุด:
dig mail._domainkey.linuxize.com TXT +short
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGa" "VuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFdepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
dig _dmarc.linuxize.com TXT +short
"v=DMARC1; p=none; adkim=r; aspf=r;"
คุณสามารถตรวจสอบนโยบาย DMARC ปัจจุบันของโดเมนของคุณหรือสร้างนโยบาย DMARC ของคุณเองได้ที่นี่
ข้อสรุป
นั่นเป็นเพียงส่วนหนึ่งของการกวดวิชานี้ ในส่วนถัดไปของซีรี่ส์นี้เราจะดำเนินการติดตั้งและกำหนดค่า RoundCube ต่อไป
เซิร์ฟเวอร์อีเมล postfix dovecot dns rspamdโพสต์นี้เป็นส่วนหนึ่งของการตั้งค่าและกำหนดค่าเซิร์ฟเวอร์จดหมาย
โพสต์อื่น ๆ ในชุดนี้:
•ตั้งค่าเซิร์ฟเวอร์อีเมลด้วย PostfixAdmin •ติดตั้งและกำหนดค่า Postfix และ Dovecot •ติดตั้งและรวม Rspamd •ติดตั้งและกำหนดค่า Roundcube Webmail