در این مقاله ، ما به نصب و پیکربندی سیستم فیلتر اسپم Rspamd و ادغام آن در سرور پست الکترونیکی خود می پردازیم و رکوردهای DKIM و DMARC DNS را ایجاد می کنیم. با ما در شتابان هاست همراه باشيد.
قبل از ادامه این مقاله ، مطمئن شوید که به عنوان کاربر دارای امتیازات sudo وارد شده اید.
توسط Rspamd ، Redis به عنوان سیستم ذخیره سازی مورد استفاده قرار می گیرد ، تا نصب شود:
sudo apt install redis-server
Unbound یک حل کننده معتبر ، بازگشتی و ذخیره کننده DNS بسیار امن است. هدف اصلی نصب این سرویس کاهش تعداد درخواست های DNS خارجی است. این مرحله اختیاری است و می توان آن را رد کرد.
sudo apt update
sudo apt install unbound
تنظیمات پیش فرض Unbound باید برای اکثر سرورها کافی باشد.
برای تنظیم بی حد و حصر به عنوان حل کننده اصلی DNS سرور خود دستورات زیر را اجرا کنید:
sudo echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u
آخرین نسخه پایدار Rspamd را از مخزن رسمی آن نصب خواهیم کرد.
با نصب بسته های لازم شروع کنید:
sudo apt install software-properties-common lsb-release
sudo apt install lsb-release wget
با استفاده از دستور wget ، کلید GPG مخزن را به keyring منابع apt خود اضافه کنید:
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
به جای تغییر پرونده های پیکربندی سهام ، پرونده های جدیدی را در پوشه /etc/rspamd/local.d/local.d/ ایجاد خواهیم کرد که تنظیمات پیش فرض را بازنویسی می کند.
به طور پیش فرض کارگر عادی Rspamd ، کارگری که پیام های ایمیل را اسکن می کند ، تمام رابط های موجود در پورت ۱۱۳۳۳ را گوش می دهد. برای پیکربندی کارگر معمولی Rspamd ، پرونده زیر را تنظیم کنید تا فقط به رابط محلی گوش دهید:
bind_socket = "127.0.0.1:11333";
کارگر پروکسی پورت ۱۱۳۳۲ را گوش می دهد و از پروتکل milter پشتیبانی می کند. برای اینکه Postfix با Rspamd ارتباط برقرار کند باید حالت میلتر را فعال کنیم:
bind_socket = "127.0.0.1:11332"; milter = yes; timeout = 120s; upstream "local" { default = yes; self_scan = yes; }
در مرحله بعد باید رمزعبور را برای سرور کارگر کنترل کننده تنظیم کنیم که امکان دسترسی به رابط وب Rspamd را فراهم کند. برای تولید یک رمز عبور رمزگذاری شده:
rspamadm pw --encrypt -p P4ssvv0rD
خروجی باید چیزی شبیه به این باشد:
$۲$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb
رمز عبور را از انتهاي خود کپی کرده و آن را در پرونده پیکربندی قرار دهید:
password = "$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb";
بعداً Nginx را به عنوان یک پروکسی معکوس در وب سرور کنترل کننده کار پیکربندی می کنیم تا بتوانیم به رابط وب Rspamd دسترسی پیدا کنیم.
با افزودن خطوط زیر به پرونده طبقه بندی-bayes.conf ، Redis را به عنوان پس زمینه برای آمار Rspamd تنظیم کنید:
servers = "127.0.0.1"; backend = "redis";
پرونده milter_headers.conf را باز کنید و سربرگ میلتر را تنظیم کنید:
use = ["x-spamd-bar", "x-spam-level", "authentication-results"];
سرانجام سرویس Rspamd را مجدداً راه اندازی کنید تا تغییرات اعمال شوند:
sudo systemctl restart rspamd
پرونده پیکربندی Nginx را باز کنید و بخشنامه مکان زیر را اضافه کنید:
... 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 را پیکربندی کنیم تا از 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 را در قسمت دوم این سری نصب و پیکربندی کرده ایم و اکنون ماژول فیلتر sieve را نصب کرده و Dovecot را با Rspamd ادغام خواهیم کرد. با نصب ماژول فیلتر Dovecot شروع کنید:
sudo apt install dovecot-sieve dovecot-managesieved
پس از نصب بسته ها ، پرونده های زیر را باز کرده و خطوط برجسته به رنگ زرد را ویرایش کنید.
... protocol lmtp { postmaster_address = [email protected] mail_plugins = $mail_plugins sieve } ...
... protocol imap { ... mail_plugins = $mail_plugins imap_quota imap_sieve ... } ...
... service managesieve-login { inet_listener sieve { port = 4190 } ... } ... service managesieve { process_limit = 1024 } ...
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 ["fileinto","mailbox"];
if anyof( header :contains ["X-Spam-Flag"] "YES", header :contains ["X-Spam"] "Yes", header :contains ["Subject"] "*** SPAM ***" ) { fileinto :create "Spam"; stop; }
هر بار که می خواهید یک نامه الکترونیکی را وارد کنید و یا از فهرست Spam ، دو اسکریپت کنید:
require ["vnd.dovecot.pipe", "copy", "imapsieve"]; pipe :copy "rspamc" ["learn_spam"];
require ["vnd.dovecot.pipe", "copy", "imapsieve"]; pipe :copy "rspamc" ["learn_ham"];
برای اجرای تغییرات ، سرویس Dovecot را مجدداً راه اندازی کنید:
sudo systemctl restart dovecot
اسکریپت را کامپایل کنید و مجوزهای صحیح را تنظیم کنید:
sievec /var/mail/vmail/sieve/global/spam-global.sieve
sievec /var/mail/vmail/sieve/global/report-spam.sieve
sievec /var/mail/vmail/sieve/global/report-ham.sieve
sudo chown -R vmail: /var/mail/vmail/sieve/
نامه شناسایی شده DomainKeys (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
ما از نامه به عنوان انتخاب کننده DKIM استفاده می کنیم.
اکنون باید دو پرونده جدید در فهرست / var / lib / rspamd / dkim / دایرکتوری ، نامه mail.key که پرونده اصلی کلید خصوصی ماست و نامه الکترونیکی پست الکترونیکی ما باشد ، درج کنید که حاوی کلید عمومی DKIM است. ما سوابق منطقه DNS خود را بعداً به روز خواهیم کرد.
مالکیت و مجوزهای صحیح را تنظیم کنید:
sudo chown -R _rspamd: /var/lib/rspamd/dkim
sudo chmod 440 /var/lib/rspamd/dkim/*
Rspamd که در جستجوی کلید DKIM ، نام انتخاب کننده و آخرین خط ، امضای DKIM برای آدرسهای فرستنده alias را فعال می کند. برای انجام این کار یک پرونده جدید با محتوای زیر ایجاد کنید:
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 را مجدداً راه اندازی کنید:
sudo systemctl restart rspamd
ما قبلاً یک جفت کلید 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" ) ;
اگر سرور Bind DNS خود را اجرا می کنید ، کافی است رکورد را مستقیماً در پرونده منطقه دامنه خود کپی و انتقال دهيد. اگر شما از یک رابط وب DNS استفاده می کنید ، باید یک رکورد TXT جدید را با نام mail._domainkey ایجاد کنید؛ محتوای ضبط TXT باید به این شکل باشد:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB
ما همچنین یک تأیید اعتبار پیام دامنه (DMARC) ایجاد خواهیم کرد که به گونه ای طراحی شده است که به سرور دریافت کننده بگوید که ایمیلی را از یک فرستنده خاص بپذیرید یا خیر. در اصل این دامنه شما را در برابر کلاهبرداری مستقیم دامنه محافظت می کند و باعث بهبود شهرت دامنه شما می شود.
برای راه اندازی یک ركورد DMARC ، دامنه ارسال کننده باید SPF و DKIM رکورد منتشر کند. خط مشی DMARC به عنوان یک TXT منتشر می شود ، و نحوه دریافت گیرنده باید هنگام عدم موفقیت اعتبار ، با ایمیل های مربوط به دامنه شما رفتار کند.
در این مقاله DMARC زیر را اجرا خواهیم کرد:
_dmarc IN TXT "v=DMARC1; p=none; adkim=r; aspf=r;"
DMARC فوق را تجزیه کنیم:
v = DMARC1 – این شناسه DMARC است
p=none
– این به گیرنده می گوید با پیام هایی که DMARC را خراب می کنند ، چه کاری انجام دهند. در مورد ما ، روی هیچ کس تنظیم نشده است که در صورت عدم موفقیت DMARC ، هیچ اقدامی انجام نخواهد داد. همچنین می توانید از ‘reject” یا quarantine استفاده کنید
adkim=r و aspf=r
– DKIM
و SPF ، r برای Relaxed و s برای Strict ، در مورد ما از Alignment Relaxed برای DKIM و SPF استفاده می کنیم. اگر سرور Bind DNS خود را اجرا می کنید ، فقط کافی است رکورد را در پرونده منطقه دامنه خود کپی و جایگذاری کنید ، و اگر از ارائه دهنده DNS دیگری استفاده می کنید ، باید یک رکورد TXT را با _dmarc به عنوان یک نام و v = ایجاد کنید.
ممکن است مدتی طول بکشد تا تغییرات DNS منتشر شود. می توانید بررسی کنید که آیا سوابق با استفاده از دستور Dig منتشر شده اند:
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;"
ما را در شتابان هاست دنبال كنيد.