در این آموزش، چگونگی نصب و پیکربندی سیستم فیلتر کننده ایمیل‌های اسپم یعنی سیستم Rspamd، یکپارچه سازی آن در سرور ایمیل و ایجاد رکوردهای DNS بصورت DKIM و DMARC شرح داده شده است.

 

ممکن است برای شما سوال پیش بیاید که برتری Rspamd نسبت به Spamassassin چیست؟ در پاسخ به سوال شما باید بگوییم Rspamd، یک سیستم بسیار فعال و انعطاف‌پذیر است که به زبان C نوشته شده است؛ بنابراین بسیار سریع‌تر از Spamassassin است که در Perl نوشته شده است. دلیل دیگر این است که Rspamd دارای یک ماژول امضای DKIM است. به همین دلیل، شما مجبور نخواهید بود، در کنار آن، از نرم افزار دیگری برای امضای ایمیل‌های خروجی خود استفاده کنید.
قبل از دنبال کردن مراحل زیر، ابتدا مطمئن شوید که به عنوان یک کاربر با امتیازات sudo وارد سیستم شده‌اید.

 

نصب Redis

Redis، به عنوان سیستم ذخیره‌سازی توسط Rspamd مورد استفاده قرار می‌گیرد. به منظور نصب آن کافیست دستور زیر را اجرا نمایید:

sudo apt install redis-server

 

نصب Unbound

Unbound، یک ابزار نگاشت نام دامنه به آدرس IP است که بسیار معتبر بوده و دارای قابلیت بازگشتی و ذخیره‌سازی است.

هدف اصلی از نصب این سرویس، کاهش تعداد درخواست‌های 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

سپس با استفاده از دستور wget بصورت زیر، کلید GPG مخزن را به کلید منابع خود اضافه نمایید:

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/ ایجاد کرده و تنظیمات پیش فرض را بازنویسی نمایید.

در Rspamd، به طور پیش فرض normal worker که پیام‌های ایمیل را اسکن می‌کند، در تمام رابط‌ها، برروی پورت 11333 شنود می‌نماید. فایل زیر را به منظور پیکربندی normal worker برای شنود تنها رابط‌های محلی ایجاد نمایید.

             /etc/rspamd/local.d/worker-normal.inc

bind_socket = "127.0.0.1:11333";

proxy worker، برروی پورت 11332 شنود کرده و از پروتکل milter  پشتیبانی می‌نماید. دقت کنید که برای اینکه Postfix با Rspamd بتواند ارتباط برقرار کند، باید حالت milter را فعال نمایید:

              /etc/rspamd/local.d/worker-proxy.inc

bind_socket = "127.0.0.1:11332";
milter = yes;
timeout = 120s;
upstream "local" {
  default = yes;
  self_scan = yes;
}

 

در مرحله بعدی، شما باید یک رمز عبور برای سرور controller worker تنظیم کنید؛ چراکه controller worker دسترسی به رابط وب Rspamd را فراهم می‌کند. به منظور تولید رمز عبور رمزگذاری شده می‌توانید از دستور زیر استفاده نمایید:

rspamadm pw --encrypt -p P4ssvv0rD

خروجی اجرای این دستور باید چیزی شبیه به این باشد:

Output:
$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb

فراموش نکنید که رمز عبور (P4ssvv0rD) را به رمز عبور امن‌تری تغییر دهید.

رمز عبور را از ترمینال خود کپی کرده و در فایل پیکربندی بصورت زیر قرار دهید:

             /etc/rspamd/local.d/worker-controller.inc

password = "$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb";

 

در بخش بعدی، Nginx را به‌عنوان یک پروکسی معکوس (reverse proxy) برای وب سرور controller worker پیکربندی خواهیم کرد تا بتوانیم به رابط وب Rspamd دسترسی پیدا کنیم.

اکنون، با افزودن خطوط زیر به فایل classifier-bayes.conf، ابزار Redis را به عنوان پشتیبان آمار Rspamd تنظیم نمایید:

             /etc/rspamd/local.d/classifier-bayes.conf

servers = "127.0.0.1";
backend = "redis";

سپس فایل milter_headers.conf را باز کرده و سرآیندهای milter را به صورت زیر تنظیم کنید:

               /etc/rspamd/local.d/milter_headers.conf

use = ["x-spamd-bar", "x-spam-level", "authentication-results"];

سرانجام سرویس Rspamd را مجدداً راه‌اندازی کنید تا تغییرات اعمال شود:

sudo systemctl restart rspamd

 

پیکربندی Nginx

در مقاله راه اندازی سرور ایمیل با PostfixAdmin، ما یک سرور Nginx برای PostfixAdmin ایجاد کردیم.

فایل پیکربندی Nginx را باز کرده و دستورالعمل location زیر را اضافه نمایید:

           /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

در مقاله نصب و پیکربندی Postfix و Dovecot، نحوه نصب و پیکربندی Dovecot شرح داده شد و اکنون به نصب ماژول فیلتر کننده sieve و یکپارچه سازی Dovecot با Rspamd پرداخته می‌شود.

با نصب ماژول فیلتر Dovecot شروع کنید:

پس از نصب بسته‌ها، فایل‌های زیر را باز کرده و خطوط مشخص شده را ویرایش نمایید.

                /etc/dovecot/conf.d/20-lmtp.conf

...
protocol lmtp {
  postmaster_address = postmaster@linuxize.com
  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
    ....
}

فایل‌ها را ذخیره کرده و ببندید.

 

یک دایرکتوری برای اسکریپت‌های sieve ایجاد نمایید:

mkdir -p /var/mail/vmail/sieve/global

به منظور انتقال ایمیل‌های مشخص شده به عنوان هرزنامه به دایرکتوری هرزنامه، یک فیلتر sieve سراسری ایجاد کنید:

                   /var/mail/vmail/sieve/global/spam-global.sieve

require ["fileinto","mailbox"];

if anyof(
    header :contains ["X-Spam-Flag"] "YES",
    header :contains ["X-Spam"] "Yes",
    header :contains ["Subject"] "*** SPAM ***"
    )
{
    fileinto :create "Spam";
    stop;
}

هر زمان ایمیل را به داخل یا خارج از دایرکتوری هرزنامه منتقل نمایید، دو اسکریپت زیر فعال می‌شوند:

            /var/mail/vmail/sieve/global/report-spam.sieve

require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_spam"];
            /var/mail/vmail/sieve/global/report-ham.sieve

require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_ham"];

به منظور اعمال تغییرات، سرویس Dovecot را مجدداً راه‌اندازی کنید:

sudo systemctl restart dovecot

اسکریپت‌های sieve را وارد کرده و مجوزهای صحیح را تنظیم نمایید:

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/

 

ایجاد کلیدهای 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

در مثال بالا از mail به عنوان انتخابگر DKIM استفاده شده است.

 

اکنون، شما باید دو فایل جدید در دایرکتوری /var/lib/rspamd/dkim/ داشته باشید، یکی فایل mail.key که فایل کلید خصوصی شماست و یکی فایل mail.pub که یک فایل حاوی کلید عمومی DKIM است. دقت کنید که شما باید پس از آن، رکورد‌های DNS zone خود را به روز کنید.

Ownership و permission‌ها را به صورت زیر تنظیم نمایید:

sudo chown -R _rspamd: /var/lib/rspamd/dkim
sudo chmod 440 /var/lib/rspamd/dkim/*

اکنون باید به Rspamd بگویید که کجا باید کلید DKIM و نام selector را جستجو کند و آخرین خط، امضای DKIM را برای آدرس‌های فرستنده مستعار فعال می‌کند. برای این کار، یک فایل جدید با محتوای زیر ایجاد نمایید:

            /etc/rspamd/local.d/dkim_signing.conf

selector = "mail";
path = "/var/lib/rspamd/dkim/$selector.key";
allow_username_mismatch = true;

Rspamd، همچنین از امضا برای امضاهای Authenticated Received Chain (ARC) پشتیبانی می‌کند.

Rspamd، از ماژول DKIM برای کار با امضاهای ARC استفاده می‌نماید. بنابراین به سادگی می‌توانید پیکربندی قبلی را کپی کنید:

sudo cp /etc/rspamd/local.d/dkim_signing.conf /etc/rspamd/local.d/arc.conf

به منظور اعمال تغییرات، سرویس Rspamd را مجدداً راه‌اندازی نمایید:

sudo systemctl restart rspamd

 

تنظیمات DNS

شما قبلاً یک جفت کلید DKIM ایجاد کرده‌اید و اکنون باید DNS zone خود را به روز کنید. کلید عمومی DKIM در فایل mail.pub ذخیره می‌شود و محتوای این فایل مشابه زیر است:

cat /var/lib/rspamd/dkim/mail.pub
Output:
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
	"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4yl"
	"nVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
) ;

اگر از سرور Bind DNS خود استفاده می‌کنید، باید رکورد را مستقیماً در فایل domain zone خود کپی نمایید. چنانچه از رابط وب DNS استفاده می‌کنید، شما باید یک رکورد TXT جدید با نام mail._domainkey ایجاد کنید. همچنین برای مقادیر، شما باید کوتیشن‌ها را حذف کرده و هر سه خط را با هم ترکیب نمایید. به عنوان مثال، در اینجا، محتوای رکورد TXT به صورت زیر خواهد بود:

Output:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB

 

ما همچنین یک احراز هویت پیام مبتنی بر دامنه (DMARC) ایجاد خواهیم کرد که به گونه‌ای طراحی شده است که به سرور دریافت کننده می‌گوید، آیا ایمیل‌های یک ارسال کننده خاص را قبول کند یا نه. این نوع احراز هویت، اساساً از دامنه شما در برابر domain spoofing بطور مستقیم محافظت می‌کند و اعتبار دامنه شما را بهبود می‌بخشد.

به منظور تنظیم رکورد DMARC، دامنه ارسال کننده باید یک رکورد SPF و DKIM منتشر نماید. خط مشی DMARC به عنوان یک رکورد TXT منتشر می‌شود و نحوه رفتار گیرنده با ایمیل‌های دامنه شما را درصورت عدم اعتبار سنجی تعیین می‌کند.

در این مقاله، ما خط مشی DMARC زیر را اجرا خواهیم کرد:

_dmarc  IN  TXT  "v=DMARC1; p=none; adkim=r; aspf=r;"

مفهوم رکورد DMARC فوق به شرح زیر است:

v=DMARC1، شناسه DMARC است.

p=none، به گیرنده می‌گوید که با پیام‌هایی که در DMARC شکست می‌خورد، چه کاری انجام دهد. در اینجا، روی none تنظیم شده است؛ به این معنی که اگر پیامی در DMARC شکست خورد، اقدامی انجام ندهد. شما می‌توانید از مقادیر reject یا quaratine نیز استفاده کنید.

adkim=r و aspf=r، تنظیمات DKIM و SPF است که r نشان دهنده Relaxed و s نشان دهنده Strict است. در اینجا از Relaxed برای هردو مورد DKIM و SPF استفاده شده است.

همانند قبل اگر سرور Bind DNS خود را اجرا می‌کنید، تنها لازم است رکورد را در فایل domain zone خود کپی نمایید و اگر از DNS provider دیگری استفاده می‌کنید، باید یک رکورد TXT با نام _dmarc  ایجاد کرده و مقادیر v=DMARC1; p=none; adkim=r; aspf=r; را ثبت نمایید.

 

ممکن است مدتی طول بکشد تا تغییرات DNS گسترش یابد. با استفاده از دستور dig می‌توانید، بررسی کنید که آیا رکوردها منتشر شده‌اند یا خیر.

dig mail._domainkey.linuxize.com TXT +short
Output:
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGa" "VuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFdepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
dig _dmarc.linuxize.com TXT +short
Output:
"v=DMARC1; p=none; adkim=r; aspf=r;"

 

 

 

منبع:

linuxize