Postfix - Настройка SPF и DKIM

Thank you for reading this post, don't forget to subscribe!

SPF и DKIM — это меха­низ­мы вери­фи­ка­ции поч­то­во­го сер­ве­ра, поз­во­ля­ю­щие про­ве­рить его под­лин­ность. Мно­гие поч­то­вые сер­ве­ра исполь­зу­ют их при полу­че­нии почты, что­бы быть уве­рен­ным в том, что полу­ча­е­мая поч­та не явля­ет­ся спа­мом. Если вы орга­ни­зу­е­те рас­сыл­ку со сво­е­го поч­то­во­го сер­ве­ра, напри­мер, пери­о­ди­че­скую рас­сыл­ку, либо рас­сыл­ку писем от ваше­го интер­нет-мага­зи­на, вам, ско­рее все­го, при­дет­ся настра­и­вать оба меха­низ­ма, посколь­ку это поз­во­лит быть уве­рен­ным в том, что ваши пись­ма достав­ля­ют­ся и авто­ма­ти­че­ски не опре­де­ля­ют­ся как спам.

Настройка SPF (Sender Policy Framework).

Настрой­ка SPF явля­ет­ся доста­точ­но про­стой. Для это­го доста­точ­но создать запи­си DNS, опре­де­ля­ю­щие, с каких сер­ве­ров раз­ре­ше­на отправ­ка почты для дан­но­го доме­на. Исполь­зо­вать­ся могут два типа запи­си — TXT и SPF.

В дан­ном при­ме­ре ука­зы­ва­ет­ся,  что отправ­ка почты дан­но­го доме­на раз­ре­ше­на толь­ко с хоста с адре­сом <ip-адрес-поч­то­во­го-сер­ве­ра>, для кото­ро­го есть запи­си типа A и MX, со всех осталь­ных отправ­ка запрещена.</ip-адрес-почтового-сервера>

Для сво­е­го доме­на мож­но сге­не­ри­ро­вать SPF-запись, напри­мер, здесь.
Поправ­ка: Microsoft при­крыл лавоч­ку, поэто­му реко­мен­дую офи­ци­аль­ную стра­ни­цу OpenSPF, на кото­рой мож­но подроб­но почи­тать о струк­ту­ре запи­си SPF на англий­ском языке.

После добав­ле­ния запи­сей не забудь­те изме­нить serial для зоны DNS и пере­за­гру­зить инфор­ма­цию о домен­ной зоне. Если вы всё сде­ла­ли пра­виль­но, то при отправ­ке пись­ма на дру­гой домен, напри­мер, на gmail.com, в заго­лов­ках пись­ма вы уви­ди­те сле­ду­ю­щий заголовок:

Настройка DKIM (DomainKeys Identified Mail).

Настрой­ка DKIM несколь­ко слож­нее, чем настрой­ка SPF. Для рабо­ты это­го меха­низ­ма необ­хо­ди­мо следующее:

— Поч­то­вый сер­вер дол­жен уметь под­пи­сы­вать письма
— Долж­ны быть созда­ны при­ват­ный и пуб­лич­ный ключи
— Долж­ны при­сут­ство­вать запи­си в DNS, ука­зы­ва­ю­щие на нали­чие под­держ­ки DKIM

Гене­ра­ция ключей.

Клю­чи мож­но сге­не­ри­ро­вать при помо­щи OpenSSL. Гене­ра­ция при­ват­но­го ключа:

После гене­ра­ции при­ват­но­го клю­ча необ­хо­ди­мо изме­нить пра­ва досту­па к нему:

Гене­ра­ция пуб­лич­но­го ключа:

Клю­чи гото­вы. Их мож­но раз­ме­стить в дирек­то­рии, где хра­нят­ся дру­гие клю­чи. Для Debian’а это дирек­то­рия /etc/ssl/private. Сге­не­ри­ро­вать их мож­но так­же при помо­щи про­грам­мы opendkim-genkey, вхо­дя­щую в пакет opendkim-tools. Теперь надо доба­вить запи­си в DNS. Запи­сей будет две.

То, что идет после «p=» — это ключ, содер­жа­щий­ся в фай­ле dkimpublic.key, он запи­сы­ва­ет­ся в одну строч­ку. А запись «_adsp._domainkey.domain.ru» опре­де­ля­ет, долж­ны ли под­пи­сы­вать­ся пись­ма. Воз­мож­ные варианты:
«dkim=all» — все пись­ма долж­ны подписываться
«dkim=discardable» — непод­пи­сан­ные пись­ма не долж­ны приниматься
«dkim=unknown» — то же самое, что и отсут­ствие такой записи.
После созда­ния запи­сей изме­ня­ем serial и пере­за­гру­жа­ем настрой­ки bind’а, если у вас уста­нов­лен он. И теперь оста­лось послед­нее — настро­ить поч­то­вый сер­вер. В каче­стве поч­то­во­го сер­ве­ра возь­мем Postfix.

Настройка поддержки DKIM почтовым сервером Postfix.

Послед­няя и, пожа­луй, самая важ­ная часть — вклю­че­ние под­пи­си писем поч­то­вым сер­ве­ром. Самое пер­вое, что нуж­но сде­лать на этом эта­пе, — это уста­но­вить opendkim:

Теперь необ­хо­ди­мо настро­ить этот сер­вис. Пер­вым делом поме­ня­ем файл /etc/default/opendkim. Впи­шем туда сле­ду­ю­щую строчку:

Теперь наш сер­вер будет запус­кать­ся на пор­ту 10024 на loopback-интер­фей­се. Сле­ду­ю­щий файл, кото­рый необ­хо­ди­мо изме­нить, — это /etc/opendkim.conf.

Рас­ком­мен­ти­ру­ем строч­ку со сло­вом Domain, впи­сы­ва­ем назва­ние наше­го домена:

Теперь ука­зы­ва­ем файл с при­ват­ным ключом:

После это­го ука­зы­ва­ем селек­тор, кото­рый мы исполь­зо­ва­ли для сге­не­ри­ро­ван­но­го ранее пуб­лич­но­го клю­ча, ука­зы­вая его в запи­си DNS. В нашем слу­чае это «mail»:

Допи­сы­ва­ем строчку:

Теперь мож­но рестар­то­вать opendkim:

И послед­ний шаг — настрой­ка непо­сред­ствен­но Postfix’а. Изме­ня­ем файл /etc/postfix/main.cf. Доба­вим туда сле­ду­ю­щие строчки:

Теперь пере­за­пус­ка­ем postfix и отправ­ля­ем пись­мо. После полу­че­ния смот­рим заго­лов­ки пись­ма. В них дол­жен при­сут­ство­вать сле­ду­ю­щий заголовок:

Если вы види­те строч­ки «spf=pass» и «dkim=pass», зна­чит вы все сде­ла­ли пра­виль­но и ваш поч­то­вый сер­вер теперь будет зна­чи­тель­но луч­ше вос­при­ни­мать­ся дру­ги­ми поч­то­вы­ми сер­ве­ра­ми, с чем я вас и поздравляю.