OpenDKIM در حقیقت روشی برای امضاء دیجیتال و بررسی کردن ایمیل ها روی Email Server با استفاده از Key های public و private میباشد. به عبارت دیگر OpenDKIM، استاندارد DKIM (مخفف DomainKeys Identified Mail) را برای امضاء کردن و بررسی کردن پیام های ایمیل بر اساس domain مورد استفاده قرار میدهد. Domain Key ها به منظور کاهش شانس Spam شدن ایمیل های خروجی مورد استفاده قرار میگیرند.
در این پست ما نحوه نصب و کانفیگ DomainKeys به همراه postfix روی CentOS 7 را شرح خواهیم داد. در اینجا فرض میکنیم که postfix از قبل روی hostname و domain زیر نصب و راه اندازی شده است.
همچنین توصیه میشود مطالعه بفرمایید.
آموزش نصب و راه اندازی میل سرور Postfix و Dovecot
آموزش نصب و راه اندازی سرویس بایند در لینوکس (Bind DNS Server)
معرفی انواع رکوردهای DNS (مانند A - MX - PTR - SOA - SPF - NS - TXT - DKIM - CNAME)
مرحله 1 : تعریف ریپازیتوری EPEL با استفاده از دستور RPM زیر
پکیج OpenDKIM در ریپازیتوری پیش فرض YUM موجود نمیباشد. اما در ریپازیتوری EPEL مربوط به CentOS 7 موجود است.
مرحله 2 : نصب پکیج OpenDKIM با استفاده از YUM
مرحله 3 : اجرا کردن دستور زیر برای ایجاد Key ها
دستورات زیر را برای ایجاد Key های public و priveate در پوشه “/etc/opendkim/keys” اجرا کنید.
default.private در حقیقت private key برای دامین و فایل default.txt در حقیقت public key ای است که ما آنرا در رکورد DNS خود (TXT Record) پابلیش خواهیم کرد. یک selector (به صورت پیش فرض نام آن default میباشد) در هنگام ایجاد key ها ساخته میشود، یک selector میتواند یک عبارت unique باشد که در key ها وجود دارد و همچنین در امضاء DKIM هم موجود است.
مرحله 4 : ویرایش فایل های زیر
فایل“/etc/opendkim.conf” را باز کنید و پارامترهای زیر را تعریف کنید.
فایل KeyTable را ویرایش کنید و example.com را با نام دامین خود جایگزین کنید.
فایل SigningTable را ویرایش و تعریف کنید که چه کسی ایمیل های خروجی را امضاء خواهد کرد.
در پارامترهای بالا من از ستاره "*" استفاده کرده ام که به این معناست که همه کاربران روی Domain مجاز به امضاء کردن ایمیل ها هستند.
فایل TrustedHosts را ویرایش کنید و FQDN سرور و domain name که زیر ip آدرس locahost (در حقیقت ip آدرس 127.0.0.1) آمده است را اضافه کنید.
مرحله 5 : ویرایش فایل کانفیگ Postfix (/etc/postfix/main.cf)
خط های زیر را در پایان فایل /etc/postfix/main.cf اضافه میکنیم.
مرحله 6 : سرویس های OpenDKIM و Postfix را start میکنیم.
مرحله 7 : TXT DNS record دامین خود را آپدیت میکنیم.
خروجی فایل default.txt را استفاده میکنیم و DNS Record (TXT) دامین را آپدیت میکنیم.
سرویس postfix و bind را restart کنید.
برای تست کردن اینکه آیا مراحل بالا کار میکند یا نه، کافیست دستور زیر را اجرا کنید.
همچنین توصیه میشود مطالعه بفرمایید.
نحوه راه اندازی Bind Server در لینوکس (اوبونتو - دبیان)
مرحله 8 : یک ایمیل تستی ارسال میکنیم و لاگ ها را مشاهده میکنیم.
در اینجا چک میکنیم که آیا ایمیل امضاء شده است یا خیر.
ایمیل ما امضاء شده و تنظیمات DKIM با موفقیت تکمیل شده است.
در این پست ما نحوه نصب و کانفیگ DomainKeys به همراه postfix روی CentOS 7 را شرح خواهیم داد. در اینجا فرض میکنیم که postfix از قبل روی hostname و domain زیر نصب و راه اندازی شده است.
- Hostname = mail5.freshdaymall.com
- Domain = freshdaymall.com
همچنین توصیه میشود مطالعه بفرمایید.
آموزش نصب و راه اندازی میل سرور Postfix و Dovecot
آموزش نصب و راه اندازی سرویس بایند در لینوکس (Bind DNS Server)
معرفی انواع رکوردهای DNS (مانند A - MX - PTR - SOA - SPF - NS - TXT - DKIM - CNAME)
مرحله 1 : تعریف ریپازیتوری EPEL با استفاده از دستور RPM زیر
پکیج OpenDKIM در ریپازیتوری پیش فرض YUM موجود نمیباشد. اما در ریپازیتوری EPEL مربوط به CentOS 7 موجود است.
کد PHP:
[root@mail5 ~]# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
مرحله 2 : نصب پکیج OpenDKIM با استفاده از YUM
کد PHP:
[root@mail5 ~]# yum install -y opendkim
مرحله 3 : اجرا کردن دستور زیر برای ایجاد Key ها
دستورات زیر را برای ایجاد Key های public و priveate در پوشه “/etc/opendkim/keys” اجرا کنید.
کد PHP:
[root@mail5 ~]# opendkim-default-keygen
Generating default DKIM keys:
Default DKIM keys for freshdaymall.com created in /etc/opendkim/keys.
[root@mail5 ~]#
[root@mail5 ~]# cd /etc/opendkim/keys/
[root@mail5 keys]# ll
total 8
-rw-r----- 1 root opendkim 891 Nov 29 08:42 default.private
-rw-r--r-- 1 root opendkim 320 Nov 29 08:42 default.txt
[root@mail5 keys]#
مرحله 4 : ویرایش فایل های زیر
- /etc/opendkim.conf : فایل کانفیگ مربوط به OpenDKIM
- /etc/opendkim/KeyTable : همانطور که از نام آن مشخص است مسیر public key برای دامین را مشخص میکند.
- /etc/opendkim/SigningTable : این فایل به OpenDKIM میگوید که چگونه Key ها را اعمال کند.
- /etc/opendkim/TrustedHosts : این فایل تعریف میکند که کدام هاست ها مجاز به استفاده از key ها هستند.
فایل“/etc/opendkim.conf” را باز کنید و پارامترهای زیر را تعریف کنید.
فایل KeyTable را ویرایش کنید و example.com را با نام دامین خود جایگزین کنید.
کد PHP:
[root@mail5 ~]# cat /etc/opendkim/KeyTable
# OPENDKIM KEY TABLE
# To use this file, uncomment the #KeyTable option in /etc/opendkim.conf,
# then uncomment the following line and replace example.com with your domain
# name, then restart OpenDKIM. Additional keys may be added on separate lines.
#default._domainkey.example.com example.com:default:/etc/opendkim/keys/default.private
default._domainkey.freshdaymall.com freshdaymall.com:default:/etc/opendkim/keys/default.private
[root@mail5 ~]#
کد PHP:
[root@mail5 ~]# cat /etc/opendkim/SigningTable
# WILDCARD EXAMPLE
# Enables signing for any address on the listed domain(s), but will work only if
# "refile:/etc/opendkim/SigningTable" is included in /etc/opendkim.conf.
# Create additional lines for additional domains.
*@freshdaymall.com default._domainkey.freshdaymall.com
فایل TrustedHosts را ویرایش کنید و FQDN سرور و domain name که زیر ip آدرس locahost (در حقیقت ip آدرس 127.0.0.1) آمده است را اضافه کنید.
کد PHP:
[root@mail5 ~]# cat /etc/opendkim/TrustedHosts
# OPENDKIM TRUSTED HOSTS
# To use this file, uncomment the #ExternalIgnoreList and/or the #InternalHosts
# option in /etc/opendkim.conf then restart OpenDKIM. Additional hosts
# may be added on separate lines (IP addresses, hostnames, or CIDR ranges).
# The localhost IP (127.0.0.1) should always be the first entry in this file.
127.0.0.1
mail5.freshdaymall.com
freshdaymall.com
[root@mail5 ~]#
مرحله 5 : ویرایش فایل کانفیگ Postfix (/etc/postfix/main.cf)
خط های زیر را در پایان فایل /etc/postfix/main.cf اضافه میکنیم.
کد PHP:
[root@mail5 ~]# vi /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
مرحله 6 : سرویس های OpenDKIM و Postfix را start میکنیم.
کد PHP:
[root@mail5 ~]# hash -r
[root@mail5 ~]# systemctl start opendkim ; systemctl enable opendkim ; systemctl restart postfix
ln -s '/usr/lib/systemd/system/opendkim.service' '/etc/systemd/system/multi-user.target.wants/opendkim.service'
[root@mail5 ~]#
مرحله 7 : TXT DNS record دامین خود را آپدیت میکنیم.
خروجی فایل default.txt را استفاده میکنیم و DNS Record (TXT) دامین را آپدیت میکنیم.
سرویس postfix و bind را restart کنید.
کد PHP:
systemctl restart postfix bind9
کد PHP:
dig default._domainkey.ceae.info TXT +short
همچنین توصیه میشود مطالعه بفرمایید.
نحوه راه اندازی Bind Server در لینوکس (اوبونتو - دبیان)
مرحله 8 : یک ایمیل تستی ارسال میکنیم و لاگ ها را مشاهده میکنیم.
در اینجا چک میکنیم که آیا ایمیل امضاء شده است یا خیر.
ایمیل ما امضاء شده و تنظیمات DKIM با موفقیت تکمیل شده است.
کامنت