postfix dkim spf on ubuntu server
Предполагам някой знаят какво представлява SPF, макар и да се води вече за отживелица.
С две думи за тези които не знаят: служи за аутентикиране на пощенски сървъри през DNS. т.е. задавате в DNS записите на домейна си, от кои адреси може да се изпращат писма. Повечето сървъри правят подобна проверка и на практика при зададен такъв адрес от ваша страна, друг сървър не може да изпраща писма от името на домейна ви.
инсрукцията е за BIND DNS сървър.
добавяте запис във файла със зоната:
example.com. IN TXT “v=spf1 mx a -all”
- mx = разрешавам mx записа (ip-то му) да изпраща писма от името на домейна
- а = разрешавам A записа за домейна да изпраща писма (web server-a)
- -all = всички останали нямат право да изпращат писма от името на домейна
възможен е и друг вариант:
example.com IN TXT “v=spf1 ip4:192.168.0.0/24 -all”
- ip4: = оказвате обхват от адреси, които могат да изпращат писма от името на домейна
DKIM (DomainKeys Identified Mail) е метод посредством цифровият подпис на пощенския сървър да подпишете писмото, за да потвърдите, че произхода му е от вашият сървър.
как се използва заедно с postfix:
- http://anothersysadmin.wordpress.com/2008/01/16/domainkeysdkim-with-postfix/
накратко:
трябва ни прокси което да подписва подадените писма от postfix и да му ги връща за доставка. ще се подписват само изходящи писма.
Убунту (във версия 10.04 със сигурност го има като пакет):
apt-get install dkimproxy
алтернативно го теглите и инсталирате от
http://dkimproxy.sourceforge.net
добавяте следният код в /etc/postfix/master.cf
(точно под първият ред)
submission inet n – n – – smtpd
-o smtpd_etrn_restrictions=reject
-o content_filter=dksign:[127.0.0.1]:10027
-o receive_override_options=no_address_mappings
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
накрая на файла добавяте:
dksign unix – – n – 10 smtp
-o smtp_send_xforward_command=yes
-o smtp_discard_ehlo_keywords=8bitmime,starttls
127.0.0.1:10028 inet n – n – 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
предлолага се, че имате сертификат за SSL в конф. папка на postfix:
/etc/postfix/ssl/smtpd.key
ако нямате: прочетете статията за postfix, как да го генерирате.
в /etc/dkimproxy/dkimproxy_out.conf
[code]# specify what address/port DKIMproxy should listen on
listen 127.0.0.1:10027
# specify what address/port DKIMproxy forwards mail to
relay 127.0.0.1:10028
# specify what domains DKIMproxy can sign for (comma-separated, no spaces)
domain lordofdeath.net
# specify what signatures to add
signature dkim(a=rsa-sha256,c=relaxed)
signature domainkeys(a=rsa-sha1,c=nofws)
# specify location of the private key
keyfile /etc/postfix/smtpd.key
# specify the selector (i.e. the name of the key record put in DNS)
selector postfix
reject-error 480[/code]
vi /etc/default/dkimproxy
RUN_DKIMPROXY_IN=0
/etc/init.d/dkimproxy restart
/etc/init.d/postfix restart
в папката на postfix със сертификата (/etc/postfix/ssl) пускате командата:
openssl rsa -in smtpd.key -out rsa.public -pubout -outform PEM
копирате съдържанието на rsa.public
cat rsa.public
vi /var/cache/bind/lorofdeath.net <- заменяте с името на вашата зона
postfix._domainkey.lordofdeath.net. IN TXT “v=DKIM1; k=rsa; p=СЪДЪРЖАНИЕ НА rsa.public”
rndc reload или /etc/init.d/bind9 restart
на всички клиенти, които искате да се подписват писмата им, ги пренасочвате към порт 587 (SSL). трябва при изпращане на писмо към google, да има в хедъра му Authentication-Results: ***** dkim=pass ****
за автоматично подписване на всички входящи писма от клиенти:
/etc/postfix.master.cf
127.0.0.1:10025 inet n – – – – smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_bind_address=127.0.0.1
-o content_filter=dksign:[127.0.0.1]:10027
dksign unix – – n – 10 smtp
-o smtp_send_xforward_command=yes
-o smtp_discard_ehlo_keywords=8bitmime,starttls
127.0.0.1:10028 inet n – n – 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
dkimproxy_out.conf
# specify what address/port DKIMproxy should listen on
listen 127.0.0.1:10027
# specify what address/port DKIMproxy forwards mail to
relay 127.0.0.1:10028
# specify what domains DKIMproxy can sign for (comma-separated, no spaces)
domain lordofdeath.net,hostatme.com,luladjiev.com,dezonbg.com,ybase.eu
# specify what signatures to add
signature dkim(a=rsa-sha256,c=relaxed)
signature domainkeys(a=rsa-sha1,c=nofws)
# specify location of the private key
keyfile /etc/postfix/smtpd.key
# specify the selector (i.e. the name of the key record put in DNS)
selector postfix
reject-error 580