آموزش راه اندازی و پیکربندی OpenDKIM
آموزش نصب و راهاندازی OpenDKIM برای Postfix روی Ubuntu 24.04

فهرست مطالب
مرحله ۱: نصب OpenDKIM
#apt update
#apt install opendkim opendkim-tools -y
پکیج `opendkim-tools` ابزار `opendkim-genkey` رو میاره که برای تولید کلید لازم داریم.
مرحله ۲: ساخت ساختار دایرکتوری
ما سوکت OpenDKIM رو داخل chroot پستفیکس قرار میدیم (روش امن و استاندارد امروزی) تا مشکل permission پیش نیاد.
# دایرکتوری برای کلیدها
#mkdir -p /etc/opendkim/keys/actobit.com
# دایرکتوری سوکت داخل chroot پستفیکس
#mkdir -p /var/spool/postfix/opendkim
#chown opendkim:postfix /var/spool/postfix/opendkim
#chmod 750 /var/spool/postfix/opendkim
# اضافه کردن user postfix به group opendkim برای دسترسی به سوکت
#usermod -aG opendkim postfix
مرحله ۳: تولید کلید DKIM
کلید RSA با selector به اسم `mail` تولید میکنیم. میتونید selector رو هر چیزی بذارید (مثلاً `default` یا `۲۰۲۶`)، ولی همون رو در DNS هم باید استفاده کنید.
#cd /etc/opendkim/keys/hoora.com
#opendkim-genkey -b 2048 -d hoora.com -s mail
#chown opendkim:opendkim mail.private
#chmod 600 mail.private
بعد از این کار دو فایل دارید:
– `mail.private` — کلید خصوصی (روی سرور میمونه)
– `mail.txt` — رکورد DNS که باید توی Cloudflare/DNS provider اضافه کنید
مرحله ۴: ساخت فایلهای Mapping
OpenDKIM به سه فایل کانفیگ نیاز داره: KeyTable، SigningTable، TrustedHosts.
KeyTable (مشخص میکنه چه کلیدی برای چه selector استفاده بشه):
#vim /etc/opendkim/KeyTable
محتوا:
mail._domainkey.hoora.com hoora.com:mail:/etc/opendkim/keys/actobit.com/mail.private
SigningTable (مشخص میکنه چه دامینی با چه کلیدی امضا بشه):
#vim /etc/opendkim/SigningTable
محتوا:
*@actobit.com mail._domainkey.actobit.com
اگر در آینده دامینهای دیگهای اضافه کردید (مثلاً `actobit.net` یا `actobit.ae`)، هر کدوم یک خط اضافه میشه.
TrustedHosts (آدرسهایی که OpenDKIM بهشون اعتماد میکنه و ایمیلهاشون رو امضا میکنه):
#vim /etc/opendkim/TrustedHosts
محتوا:
۱۲۷.۰.۰.۱
localhost
::۱
10.۱.۱.۲۰۰
mail.actobit.com
actobit.com
*.actobit.com
(آیپی داخلی سرور رو که `۱۰.۱.۱.۲۰۰` بود، اضافه کردم)
مرحله ۵: تنظیم opendkim.conf
#vim /etc/opendkim.conf
محتوای کامل فایل رو با این جایگزین کنید:
# Logging
Syslog yes
SyslogSuccess yes
LogWhy yes
# User/Group
UserID opendkim:opendkim
UMask 002
Socket local:/var/spool/postfix/opendkim/opendkim.sock
PidFile /run/opendkim/opendkim.pid
# Operating mode: signing + verifying
Mode sv
# Canonicalization
Canonicalization relaxed/simple
# Sign for these domains/users
Domain actobit.com
Selector mail
KeyFile /etc/opendkim/keys/actobit.com/mail.private
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
# Security
AutoRestart yes
AutoRestartRate 10/1h
Background yes
DNSTimeout 5
SignatureAlgorithm rsa-sha256
# Don’t sign these headers
OversignHeaders From
نکته: وقتی `KeyTable` و `SigningTable` استفاده میکنید، سه خط `Domain`/`Selector`/`KeyFile` بالاتر در عمل override میشن، ولی نگهداشتنشون برای fallback ضرری نداره.
مرحله ۶: تنظیم systemd برای OpenDKIM
ممکنه نیاز باشه مسیر سوکت رو در فایل default هم آپدیت کنید:
#vim /etc/default/opendkim
اگر خطی شبیه `SOCKET=…` داره، با این عوض کنید (یا کامنتش کنید چون توی `opendkim.conf` تعریف کردیم):
# SOCKET=”local:/var/spool/postfix/opendkim/opendkim.sock”
اگر فایل default خالی بود یا خط SOCKET نداشت، نیازی به تغییر نیست.
مرحله ۷: تنظیم Permissions نهایی
#chown -R opendkim:opendkim /etc/opendkim
#chmod -R go-rwx /etc/opendkim/keys
مرحله ۸: تنظیم Postfix برای استفاده از OpenDKIM
در `/etc/postfix/main.cf` این خطوط رو پیدا کنید:
smtpd_milters = local:/run/opendkim/opendkim.sock
non_smtpd_milters = local:/run/opendkim/opendkim.sock
با این جایگزین کنید (مسیر relative نسبت به chroot پستفیکس):
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = local:opendkim/opendkim.sock
نکته: `milter_protocol = 6` این پروتکل جدیدتره و امکانات بیشتری مثل ارسال SMTP reply code از milter رو ساپورت میکنه.
## مرحله ۹: اضافه کردن TXT Record در DNS
محتوای فایل DNS رو ببینید:
#cat /etc/opendkim/keys/actobit.com/mail.txt
چیزی شبیه این میبینید:
mail._domainkey IN TXT ( “v=DKIM1; h=sha256; k=rsa; ”
“p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1abc…”
“…XYZ123==” ) ; —– DKIM key mail for actobit.com
در پنل DNS دامین `actobit.com` (Cloudflare یا هرجا) یک رکورد TXT اضافه کنید:
– Type: `TXT`
– Name `mail._domainkey`
– Value: محتوای داخل پرانتزها رو بههم بچسبونید بدون فاصله و کوتیشنها:
v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1abc…XYZ123==
– TTL: `3600` (یا Auto)
مرحله ۱۰: ریاستارت و تست
#systemctl enable opendkim
#systemctl restart opendkim
#systemctl restart postfix
#systemctl status opendkim
اگر در status خطایی نبود، چک کنید سوکت ساخته شده باشه:
ls -la /var/spool/postfix/opendkim/
باید فایل `opendkim.sock` رو ببینید با مالکیت `opendkim:postfix`.
تست محلی
اول صبر کنید DNS propagate بشه (معمولاً ۵-۳۰ دقیقه)، بعد:
#opendkim-testkey -d actobit.com -s mail -vvv
خروجی موفق:
opendkim-testkey: key OK



