دانشنامهدواپسسایرسیستم عامللینوکس

آموزش راه اندازی و پیکربندی 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

نمایش بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا