Задача:
- при приеме почты проверять SPF запись домена отправителя
- прописать SPF запись для своего домена
Устанавливаем добавку для postfix’a:
1
2
| $ cd /usr/ports/mail/postfix-policyd-spf
$ make install clean |
Добавляем в /usr/local/etc/postfix/master.cf:
1
2
| policy unix - n n - - spawn
user=nobody argv=/usr/local/sbin/postfix-policyd-spf |
Добавляем в /usr/local/etc/postfix/main.cf:
1
2
3
4
| smtpd_recipient_restrictions = ...
reject_unknown_sender_domain
reject_unauth_destination
check_policy_service unix:private/policy |
После этого в заголовках входящих писем будет заголовок Received-SPF:
1
| Received-SPF: softfail (case.net.ru: transitioning domain of globalevent.ru does not designate 77.113.141.27 as permitted sender) client-ip=77.113.141.27; envelope-from=thawsm@globalevent.ru; helo=apn-77-113-141-27.gprs.plus.pl; |
Возникла проблема, при включенной проверке spf – spamooborona падает. Как решить пока не знаю. Вот лог:
1
| Apr 19 12:18:18 case postfix/pipe[92687]: 5293F1E3025: to=<case@case.net.ru>, relay=so-filter, delay=0.19, delays=0.16/0.01/0/0.02, dsn=5.3.0, status=bounced (Command died with signal 11: "/usr/local/sbin/sp-postfix") |
В Bind, добавляем для своего домена spf запись:
1
| case.net.ru. IN TXT "v=spf1 +a +mx -all" |
Теперь, если на сервере получателя письма настроен SPF, то письма будут приходить со следующим заголовком:
1
| Received-SPF: pass (test.myiptest.com: domain of case.net.ru designates 213.79.110.123 as permitted sender) |
Ссылки:
http://www.openspf.org/
http://www.myiptest.com/staticpages/index.php/DomainKeys-DKIM-SPF-Validator-test
Установка:
1
2
3
4
5
6
7
| $ cd /usr/ports/security/clamsmtp
$ make showconfig
===> The following configuration options are available for clamsmtp-1.10_1:
LOCAL_CLAMAV=on "RUN_DEPEND on security/clamav"
LOCAL_CLAMAV_DEVEL=off "RUN_DEPEND on security/clamav-devel"
===> Use 'make config' to modify these settings
$ make install clean |
Прописываем в rc.conf:
Копируем конфиг:
1
2
| $ cd /usr/local/etc/
$ cp clamsmtpd.conf-sample clamsmtpd.conf |
Настраиваем:
1
2
3
4
| OutAddress: 127.0.0.1:1026
Listen: 127.0.0.1:1025
ClamAddress: /var/run/clamav/clamd.sock
User: clamav |
Запускаем:
1
| $ /usr/local/etc/rc.d/clamsmtpd start |
Настраиваем master.cf в Postfix’e (в моем случае подключена еще и спамоборона):
1
2
3
4
5
6
7
| smtp inet n - n - - smtpd
-o content_filter=so-filter
127.0.0.1:1026 inet n - n - - smtpd
-o content-filter=
so-filter unix - n n - - pipe
flags=q. user=souser argv=/usr/local/sbin/sp-postfix
-a ${client_address} -f ${sender} -- ${recipient} |
Путь письма при этом выглядит так:
1
| mail -> smtpd (25) -> sofilter -> clamav (1025) -> smtpd (1026) -> mail |
Перезапускаем Postfix:
Postgrey is a program which implements greylisting and is
designed to work with the Postfix MTA.
WWW: http://postgrey.schweikert.ch/
Принцип действия серых списков основан на тактике рассылки спама. Как правило, спам рассылается в очень короткое время.
Работа серого списка заключается в намеренной задержке писем на некоторое время. При этом адрес и время пересылки заносится в базу данных серого списка. Если удалённый компьютер является настоящим МТА, то он согласно RFC2821, должен сохранить письмо в очереди и повторять пересылку в течение пяти дней. Спам-боты, как правило, писем в очереди не сохраняют, поэтому спустя непродолжительное время, прекращают попытки переслать письмо. Экспериментальным путём установлено, что в среднем время рассылки спама составляет чуть больше часа.
При повторной пересылке письма с этого же адреса, если с момента первой попытки прошло необходимое количество времени, Ваш МТА примет его. При этом IP-адрес отправляющего МТА, электронные адреса отправителя и получателя будут внесены в белый список на достаточно длительное время, после чего письма будут приниматься без задержек.
Установка:
1
2
| [root@case.net.ru]$ cd /usr/ports/mail/postgrey/
[root@case.net.ru]$ make install clean |
Добавляем в rc.conf:
Прописываем правила проверки сообщения для postfix’a в main.cf:
1
| smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023 |
Добавляем в файл /usr/local/etc/postfix/postgrey_whitelist_recipients доверенные домены и почтовые ящики для которых не производится проверка postgrey’ем.
Запускаем postgrey:
1
| [root@case.net.ru]$ /usr/local/etc/rc.d/postgrey start |
Перезагружаем postfix:
1
| [root@case.net.ru]$ postfix reload |
Отчет о проделанной работе:
1
| $ cat /var/log/maillog | postgreyreport --dbdir=/var/db/postgrey --nosingle_line --check_sender=mx,a --separate_by_subnet=":======\n" |
Ссылки: http://argo-uln.blogspot.com/2007/11/blog-post.html
Что имеется: postfix + mysql + dovecot как imap сервер + roundcube
Задача: сделать так, что бы письма с пометкой SPAM ложились в каталог Junk, а не Inbox.
Собираем Dovecot с поддержкой LDA:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| [root@case.net.ru]$ cd /usr/ports/mail/dovecot
[root@case.net.ru]$ make showconfig
===> The following configuration options are available for dovecot-1.1.11:
KQUEUE=on "kqueue(2) support"
SSL=off "SSL support"
IPV6=off "IPv6 support"
POP3=off "POP3 support"
LDA=on "LDA support"
MANAGESIEVE=off "ManageSieve support"
GSSAPI=off "GSSAPI support"
VPOPMAIL=off "VPopMail support"
BDB=off "BerkleyDB support"
LDAP=off "OpenLDAP support"
PGSQL=off "PostgreSQL support"
MYSQL=on "MySQL support"
SQLITE=off "SQLite support"
===> Use 'make config' to modify these settings
[root@case.net.ru]$ make install clean |
Устанавливаем dovecot-sieve:
1
2
| [root@case.net.ru]$ cd /usr/ports/mail/dovecot-sieve/
[root@case.net.ru]$ make install clean |
Настраиваем postfix:
Добавляем в master.cf:
1
2
| dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient} |
Меняем в main.cf:
1
| virtual_transport = dovecot |
Меняем в dovecot.conf:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| protocol lda {
postmaster_address = case@case.net.ru
hostname = case.net.ru
mail_plugins = cmusieve
mail_plugin_dir = /usr/local/lib/dovecot/lda
sendmail_path = /usr/sbin/sendmail
sieve_global_path = /usr/home/vmail/dovecot-sieve.conf
}
auth default {
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
group = vmail
}
}
} |
Настраиваем sieve в файле /usr/home/vmail/dovecot-sieve.conf:
1
2
3
4
| require "fileinto";
if header :contains "Subject" "SPAM" {
fileinto "Junk";
} |
Имеется FreeBSD 6.4 и Postfix 2.5.
Скачиваем собственно сам пакет спамообороны:
spamooborona1024_postfix-2.2.tbz
Устанавливаем:
pkg_add -v spamooborona1024_postfix-2.2.tbz.
Для запуска /usr/local/sbin/sp-postfix требуется библиотека libgcc_s.so.1.
Устанавливаем gcc42:
# cd /usr/ports/lang/gcc42
# make install clean
Перезапускаем postfix (postfix reload) и радуемся жизни.
Tips для fetchmail:
По умолчанию Спамооборона отказазывается проверять письма принимаемые через fetchmail, пишет:
Outgoing mail skipped, origin=127.0.0.1
Что бы работало делаем так, что бы fetchmail доставлял письма на внешний интерфейс:
fetchmail --smtphost mx.case.net.ru
postfix (smtpd) + dovecot (imapd) + roundcube webmail (web interface for imapd) + spamassassin
dovecot.conf (только изменения)
protocols = imap
listen = 127.0.0.1
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:/usr/home/vmail/%u
auth default {
mechanisms = plain
passdb sql {
args = /usr/local/etc/dovecot-sql.conf
}
userdb static {
args = uid=2011 gid=2011 home=/usr/home/vmail/%u
}
user = vmail
}
spamassassin: /usr/local/etc/mail/spamassassin/local.cf
rewrite_header Subject *****SPAM*****
report_safe 0
required_score 10.0
use_bayes 1
bayes_auto_learn 1