عنوان:

‫نصب و پیکربندی Postfix برای ارسال ایمیل - قسمت ۷ - عیب‌یابی و تایید DKIM


نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۴/۲۱ ۰۸:۱۰
آدرس: www.dntips.ir
در قسمت قبل، مراحل پیچیده راه‌اندازی OpenDKIM را پشت سر گذاشتیم. اما از کجا مطمئن شویم که همه چیز به درستی کار می‌کند؟ تنظیمات اشتباه در هر یک از مراحل (کلید خصوصی، پیکربندی OpenDKIM یا رکورد DNS) می‌تواند کل فرآیند را با شکست مواجه کند. در این فصل، ما با استفاده از ابزارهای خط فرمان، صحت عملکرد DKIM را از سه زاویه مختلف بررسی می‌کنیم تا از نتیجه کار خود ۱۰۰٪ مطمئن شویم.

بخش ۷.۱: عیب‌یابی با opendkim-testkey

ابزار opendkim-testkey که همراه با opendkim-tools نصب شد، بهترین نقطه شروع برای عیب‌یابی است. این ابزار به صورت محلی روی سرور شما اجرا می‌شود و بررسی می‌کند که آیا OpenDKIM می‌تواند کلید عمومی منتشر شده در DNS را پیدا کند و آن را با کلید خصوصی موجود در سرور تطبیق دهد یا خیر.
دستور زیر را در ترمینال سرور خود اجرا کنید. فراموش نکنید که yourdomain.com را با دامنه خود جایگزین کنید.
sudo opendkim-testkey -d yourdomain.com -s mail -vvv
  • -d yourdomain.com: دامنه‌ای که می‌خواهیم تست کنیم.
  • -s mail: انتخابگر (selector) کلید ما که در فصل قبل تعیین کردیم.
  • -vvv: حالت بسیار پرجزئیات (very verbose) را برای نمایش تمام مراحل تست فعال می‌کند.

تفسیر نتایج:
۱. نتیجه موفقیت‌آمیز:
اگر همه چیز درست باشد، باید در انتهای خروجی، پیامی شبیه به این را ببینید:
opendkim-testkey: key OK
این پیام یعنی OpenDKIM توانسته رکورد TXT را از DNS بخواند و کلید عمومی داخل آن با کلید خصوصی روی سرور شما مطابقت دارد. این بهترین خبری است که می‌توانید بگیرید!

۲. نتیجه ناموفق:
اگر با خطاهایی مانند موارد زیر روبرو شدید، مشکلی وجود دارد:
  • key not found: این خطا یعنی ابزار نتوانسته رکورد DKIM را در DNS پیدا کند. دلایل احتمالی:
  • رکورد DNS هنوز منتشر نشده است (کمی بیشتر صبر کنید).
  • نام رکورد را اشتباه وارد کرده‌اید (باید mail._domainkey باشد).
  • در نام دامنه یا انتخابگر در دستور opendkim-testkey اشتباه تایپی دارید.
  • key invalid یا key mismatch: این خطا یعنی رکورد پیدا شده، اما محتوای آن (کلید عمومی) با کلید خصوصی روی سرور همخوانی ندارد. دلایل احتمالی:
  • شما کلید عمومی را به صورت ناقص یا اشتباه در رکورد TXT در پنل DNS کپی کرده‌اید.
  • مجوزهای فایل کلید خصوصی روی سرور (/etc/postfix/dkim/mail.private) صحیح نیست و opendkim نمی‌تواند آن را بخواند.

بخش ۷.۲: بررسی مستقیم رکورد DNS با dig

ابزار opendkim-testkey از دید سرور به ماجرا نگاه می‌کند. اما آیا رکورد ما از دید اینترنت عمومی هم قابل مشاهده است؟ dig به این سوال پاسخ می‌دهد. این دستور مستقیماً از سرورهای DNS عمومی سوال می‌پرسد.
دستور زیر را برای مشاهده رکورد TXT مربوط به DKIM اجرا کنید:
dig TXT mail._domainkey.yourdomain.com +short
خروجی مورد انتظار:
خروجی باید دقیقاً همان رشته‌ای باشد که در فایل mail.txt دیدید و در پنل DNS خود وارد کردید.
"v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...AQAB"
اگر خروجی این دستور خالی بود، یعنی رکورد شما هنوز از خارج از سرور قابل مشاهده نیست. اگر خروجی متفاوت بود، باید مقدار رکورد TXT را در پنل DNS خود به دقت بازبینی و اصلاح کنید.

بخش ۷.۳: آزمون نهایی: ارسال ایمیل و بررسی هدرها

بهترین و قطعی‌ترین راه برای تست، یک آزمون در دنیای واقعی است. یک ایمیل آزمایشی دیگر به حساب شخصی خود (ترجیحاً Gmail که تحلیل بسیار خوبی ارائه می‌دهد) ارسال کنید.
echo "This is a test email to verify DKIM." | mail -s "DKIM Verification Test" your-personal-email@gmail.com
پس از دریافت ایمیل در اینباکس Gmail:
ایمیل را باز کنید. روی آیکون سه نقطه (گزینه‌های بیشتر) در گوشه سمت راست بالای ایمیل کلیک کنید. گزینه Show original (نمایش نسخه اصلی) را انتخاب کنید. یک صفحه جدید با تمام جزئیات و هدرهای ایمیل باز می‌شود. در بالای این صفحه، یک بخش خلاصه به نام Authentication-Results وجود دارد. به دنبال DKIM در این بخش بگردید.
نتیجه مورد انتظار:
SPF:    PASS with IP 203.0.113.50    [Learn more]
DKIM:   'PASS' with domain yourdomain.com [Learn more]
DMARC:  'PASS'                            [Learn more]
دیدن عبارت DKIM: 'PASS' به این معنی است که سرور Gmail با موفقیت امضای ایمیل شما را با استفاده از کلید عمومی که در DNS منتشر کرده‌اید، تأیید کرده است.

تبریک! 🎉 با دیدن این نتیجه، می‌توانید مطمئن باشید که پیکربندی DKIM شما کاملاً موفقیت‌آمیز بوده و سرور ایمیل شما اکنون از دو سپر امنیتی قدرتمند SPF و DKIM بهره‌مند است. در فصل بعدی به سراغ بررسی لاگ‌ها و عیب‌یابی‌های عمومی‌تر خواهیم رفت.