انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: شبه راهنما: DKIM بر روی سرورهای Debian/Ubuntu و جلوگیری از اسپم شدن ایمیل‌ها  (دفعات بازدید: 7861 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین Roozbeh Shafiee

  • ناظر انجمن
  • *
  • ارسال: 1260
  • جنسیت : پسر
  • Be Free
    • Roozbeh Shafiee Personal Home Page
طی چندسال اخیر یکی از مشکلاتی که با شرکت‌های ارائه دهنده خدمات هاستیگ داشتم اسپم شدن ایمیل‌های ارسالی از میل سرور آنها و از طرف سرویس دهنده‌هایی مثل Gmail و Yahoo بود و این مشکل معمولا برای اکثر شرکت های ایرانی به دلیل عدم کانفیگ درست میل سرور وجود داشت. این مسئله به صورت پیشفرض برای همه میل سرورها به وجود می‌اید و این کار توسط سرویس دهنده مقصد برای جلوگیری از اسپمینگ صورت میگیرد. در اکثر سرویس دهنده های ایمیل معتبر مثل Gmail شیوه دریافت ایمیل برای چک کردن ایمیل‌های دریافتی و اینکه از یک میل سرور معتبر ارسال شده یا نه، به این شکل است که ایمیل‌های ارسالی از میل سرور مبدا باید با استفاده از DKIM یا Domain Key Identify Mail نشانه گذاری شوند.

اگر بخواهیم به ساده ترین شکل ممکن این موضوع رو توضیح دهیم باید اینگونه گقت که بعد از اینکه DKIM روی سرور نصب و کانفیگ شد ایمیل‌های ارسالی در هدر ایمیل‌ها با یک استرینگ نشانه گذاری میشوند و توسط TXT Recordی که در DNS Zone دامین قرار داده میشود توسط جیمیل مقایسه میشود. تست این مقایسه اگر با موفقیت انجام شود ایمیل ارسالی وارد inbox میشود و در غیر اینصورت باید در اسپم پاکس به دنبال ایمیل ارسالی بگردید. یکی از شیوه‌های ارسال اسپم به این شکل است که اسپمر با تغییر آدرس ارسال کننده ایمیل ( From: ) سعی در فریب مخاطب و دریافت کننده ایمیل را دارد که این ایمیل حتما از صاحب آدرس دامین ارسال شده است و با اسفاده از DKIM جیمیل و سایر میل سرور‌های معتبر، از این متد برای اسپم کردن ارسال کننده غیرواقعی استفاده میکنند.

پیشنیاز این مطلب نصب و کانفیگ یک میل سرور با استفاده از Postfix به عنوان SMTP Server بر روی توزیع Debian GNU/Linux نسخه Wheezy و Squeeze یا Ubuntu Server است . ابزاری که برای DKIM در سرورهای لینوکسی استفاده میشود OpenDKIM است. برای نصب OpenDKIM بر روی سرورهای Debian پکیج‌های زیر را نصب میکنیم.

sudo apt-get install opendkim opendkim-tools
برای ادامه نیاز دارید که Public Key و Private Key را برای هر دامین خود بر روی سرور ایجاد کنید. Public Key ایجاد شده در نهایت به عنوان TXT Record روی DNS  Zone تعریف میشود. برای ایجاد کلید ابتدا باید مسیر زیر را ایجاد کنید. فقط فراموش نکنید که در کامندهای زیر به جای example.com آدرس دامین خود را قرار دهید:

mkdir -p /etc/opendkim/keys/example.com
با استفاده از opendkim-genkey کلید Private مربوط به دامین خود را میتوانید ایجاد کنید:

opendkim-genkey -D /etc/opendkim/keys/example.com/ -d example.com -s default
و سپس نیاز است که owner کلید دامین را به opendkim تغییر دهید:

chown -R opendkim:opendkim /etc/opendkim/keys/example.com
و در نهایت نام کلید ایجاد شده را از default.private به default تغییر میدهیم.

mv /etc/opendkim/keys/example.com/default.private /etc/opendkim/keys/example.com/default
برای ادامه کار فایل زیر را با استفاده از ادیتور مورد علاقه‌تان مثل Vi یا Nano باز کنید:

vi  /etc/opendkim.conf
و محتوای زیر را جایگزین محتوای آن کنید:

##
## opendkim.conf -- configuration file for OpenDKIM filter
##
AutoRestart             Yes
AutoRestartRate         10/1h
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  inet:8891@localhost
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

بعد از ایجاد کانفیگ مورد نیاز باید فایل زیر ایجاد و باز شود:

vi /etc/opendkim/KeyTable
و خط زیر را در آن کپی کنید. این فایل به OpenDKIM میگوید که کلیدهای دامین شما را کجا و در چه مسیری پیدا کند. اگر برای هر دامین نیاز به کلید داشته باشید باید در همین فایل به شکل زیر یک خط یا لاین جدید ایجاد کنید:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default
برای ادامه کار فایل زیر را ایجاد و باز کنید:

vi /etc/opendkim/SigningTable
و مقدار زیر را درون آن قرار دهید. در این فایل برای opendkim تعریف میشود که چه آدرس‌های میتوانند از کلید ساخته شده برای ایمیل‌های معتبر و نشانه‌گذاری شده استفاده کنند. پیشفرض ما بر این است که همه آدرس ایمیل‌های example.com میتوانند از کلید ساخته شده استفاده کنند:

*@example.com default._domainkey.example.com
فایل بعدی که باید ایجاد شود فایل TrustedHosts است:

vi /etc/opendkim/TrustedHosts
و محتوای زیر را با توجه به Hostname سرور خود درون آن کپی کنید. توجه داشته باشید که محتویات این فایل مشخص میکند که چه هاست‌هایی میتوانند از این کلید وopendkim استفاده کنند.

127.0.0.1
hostname.example.com
example.com

نکته مهم: حواستان باشد اگر از چند سرور درون شبکه خود استفاده میکنید و آنها از این سرور به عنوان میل سرور استفاده میکنند آدرس آنها را به یکی از صورت‌های HostName یا IP چه IPv4 چه IPv6 و چه CIDR-style IP به شکل w.x.y.z/24 هر یک در قالب یه خط به کانفیگ اضافه کنید.

به مراحل آخر نزدیک میشویم ! کانفیگ Postfix را از مسیر زیر باز کنید:

vi /etc/postfix/main.cf
و در انتهای آن محتوای زیر را اضافه کنید:

smtpd_milters           = inet:127.0.0.1:8891
non_smtpd_milters       = $smtpd_milters
milter_default_action   = accept
milter_protocol = 2

حالا با استفاده از دستورات زیر سرویس‌های OpenDKIM و Postfix را ریستارت کنیم:

service opendkim restart

service postfix restart

و برای مرحله آخر باید فایل default.txt را از مسیر زیر باز کنید:

cat /etc/opendkim/keys/example.com/default.txt
محتویات داخل آن چیزی شبیه به رشته زیر است:

default._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=7k45u5i2T1AlEBeurUbdKh7Nypq4lLMXC2FHhezK33BuYR+3L7jxVj7FATylhwI
DAQABMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHY7Zl+n3SUldTYRUEU1BErHkKN0Ya52gazp1R7FA7vN5RddPxW/s
O9JVRLiWg6iAE4hxBp42YKfxOwEnxPADbBuiELKZ2ddxo2aDFAb9U/lp4" ; ----- DKIM default for example.com

محتویات آن را کپی کنید و در آخر DNS Zone دامین خود کپی کنید. اگر Bind را به عنوان DNS-Server خود به درستی کانفیگ کرده باشید Zoneهای دامین‌های خود بر روی سرور را باید در مسیر /etc/bind پیدا کنید. بعد از اضافه کردن TXT Record به دامین خود باید Bind را هم ریستارت کنید:

service bind9 restart

منبع: SlashRosha
Cloud Infrastructure and Virtualization Architect

Roozbeh Shafiee Home Page : http://RoozbehShafiee.Com