The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Как заставить Postfix принимать почту не только из локалки"
Отправлено odip, 28-Май-06 13:16 
В свое время сталкивался с такой проблемой и искал способ ее разрешения
Найденное решение используется c тех пор
У меня кстати тоже стоит FreeBSD, Postfix на Maildir, проверяет почту drweb

Тут предлагалось прописать IP-адрес в mynetworks
Это не выход - потому что внешние пользователи могут иметь произвольные IP

Предлагалось проверять mail from и если адрес имеет вид username@mydomain, то тогда разрешать релеинг.
Ранее я применял именно такой подход, но у него плохая security - любой может поставить mail from и отправлять через ваш сервер почту.
Сейчас спамеры кстати так и делают :)
В известном фильтре ORBS одна из проверок для SMTP как раз проверяет
- нельзя ли через вас послать почту таким образом.

Используется авторизация smtp auth через ssl/tls.

С точки зрения пользователя чтобы он мог отправлять почту из дома через сервер
нужно настроить почтовый account:
pop3/imap - mail.server.name
pop3 или imap over ssl = yes
smtp - mail.sever.name
smtp over ssl = yes
Использовать smtp auth = yes
логин пароль для smtp auth - такие же как для incoming connection


На сервере:

Для авторизации sasl используется saslauthd
Запущенный saslauthd делает верификацию через pam ( -a pam )
Верификация через файл с базой паролей - мне этот подход не понравился тем,
что помимо пароля для почты придется еще пробивать пароль для верификации
и как-то следить за ними

Для авторизации удаленных пользователей используется smtp auth
Но тут опять есть проблема с security - smtp auth позволяет использовать разные методы
авторизации, обычные методы PLAIN/LOGIN которые понимают практически все клиенты
небезопасные, а хорошие методы CRAM-MD5 например не понимает практически никто
и кроме всего прочего для CRAM-MD5 требуется пароль в открытом виде
( то есть опять требуется использовать базу паролей для sasl )

Поэтому smtp auth используется только в сочетании с ssl/tls

Посл-ть установки специфичная для FreeBSD:

*) cyrus-sasl2

cd /usr/ports/security/cyrus-sasl2
make WITH_BDB_VER=43 install

cd /usr/ports/security/cyrus-sasl2-saslauthd
make WITH_BDB_VER=43 install

*) postfix

cd /usr/ports/mail/postfix
   USE SASL2,TLS,DB43,OpenLDAP
make install

*) change sendmail to postfix

*) setup sasl

   Edit /etc/rc.conf

#### sasldb ####
saslauthd_enable="YES"

   Edit /usr/local/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: login plain digest-md5 cram-md5

   Edit /usr/local/lib/sasl2/Sendmail.conf

pwcheck_method: saslauthd
mech_list: login plain digest-md5 cram-md5

   Start saslauthd

/usr/local/etc/rc.d/saslauthd.sh start

   Add to /usr/local/etc/postfix/main.cf

smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
broken_sasl_auth_clients = yes

   Edit /etc/pam.d/{imap,popd3,smtp}

   Restart postfix

postfix stop
postfix start

#
# Часть конфига postfix:
#

# Enable SASL authentication in the Postfix SMTP server. By default,
# the Postfix SMTP server does not use authentication.
#
smtpd_sasl_auth_enable = yes

# Это для правильной аутентикации
# логин юзера расширяется указанным доменом
# то есть когда приходит vasya,
# то реально аутентификация ведется для vasya@mail.server.name
# если использовать базу sasldb, то там в качестве логина нужно писать
# vasya@mail.server.name, а не просто vasya

# The name of the local SASL authentication realm.
#
smtpd_sasl_local_domain = $myhostname

# Настроить postfix на работу с ssl/tls - это вообще отдельная песня

# Postfix certificates in PEM format.
#
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl.crt/smtpd.crt
smtpd_tls_key_file = /usr/local/etc/postfix/ssl.key/smtpd.key
smtpd_tls_CAfile = /etc/ssl/ca.crt

# Enable additional Postfix SMTP server logging of TLS activity. Each logging
# level also includes the information that is logged at a lower logging level.
# 0 Disable logging of TLS activity.
# 1 Log TLS handshake and certificate information.
# 2 Log levels during TLS negotiation.
# 3 Log hexadecimal and ASCII dump of TLS negotiation process.
# 4 Also log hexadecimal and ASCII dump of complete transmission after STARTTLS.
#
smtpd_tls_loglevel = 1

# Opportunistic mode: announce STARTTLS support to SMTP clients,
# but do not require that clients use TLS encryption.
#
smtpd_use_tls = yes

# When TLS encryption is optional in the Postfix SMTP server,
# do not announce or accept SASL authentication over unencrypted connections.
#
smtpd_tls_auth_only = yes

# Name of the file containing the optional Postfix SMTP server TLS session
# cache. Specify a database type that supports enumeration, such as btree
# or sdbm; there is no need to support concurrent access. The file is created
# if it does not exist.
#
smtpd_tls_session_cache_database = btree:/var/run/smtpd_tls_scache

#
# Теперь собственно надо разрешить клиентам sasl делать relaying
# Как известно все проверки в postfix рекомендуется запихать
# в smtpd_recipient_restrictions
#

# The access restrictions that the Postfix SMTP server applies in
# the context of the RCPT TO command.
#
smtpd_recipient_restrictions =
        reject_non_fqdn_sender,
        reject_non_fqdn_recipient,
        reject_unknown_sender_domain,
        reject_unknown_recipient_domain,
        permit_sasl_authenticated,
        permit_mynetworks,
        reject_invalid_hostname,
        reject_unauth_destination,
        check_policy_service unix:private/policy,
        check_recipient_access pcre:/usr/local/etc/postfix/recipient_checks.pcre,
        check_client_access hash:/usr/local/etc/postfix/client_checks,
        reject_rbl_client cbl.abuseat.org,
        reject_rbl_client dul.dnsbl.sorbs.net,
        reject_rbl_client list.dsbl.org,
        reject_rbl_client opm.blitzed.org,
        reject_rbl_client relays.ordb.org,
        reject_rbl_client sbl.spamhaus.org,
        permit

# Optional access restrictions that the Postfix SMTP server applies
# in the context of the SMTP DATA command.
#
smtpd_data_restrictions =
        reject_unauth_pipelining,
        permit

Еще немного комментариев по поводу smtpd_recipient_restrictions

Правило permit_sasl_authenticated расположено выше чем permit_mynetworks
Это позволяет sasl-верифицированным клиентам проходить даже если они не в локальной сети

Правило reject_invalid_hostname используется в таком виде,
потому что windows-клиенты Outlook, Outlook Express не умеют посылать
полный fqdn hostname при обращении к серверу
Например компьютер student.mydomain шлет имя student

Правило check_policy_service unix:private/policy - это greylisting

Естественно что описано далеко не все,
поэтому вот еще используемые сcылки, собранные за время работы с почтой:

devin-postfix-smtp-auth.txt
http://www.thecabal.org/~devin/postfix/smtp-auth.txt

Postfix SMTP AUTH (and TLS) HOWTO
http://postfix.state-of-mind.de/patrick.koetter/smtpauth/

SASL implementations (Clients)
http://www.sendmail.org/~ca/email/mel/SASL_ClientRef.html

Converting Mbox mailboxes to Maildir format ( я использую Maildir-формат )
http://batleth.sapienti-sat.org/projects/mb2md/

Inter7 Courieriimap ( pop3/imap сервер - courier-imap )
http://www.inter7.com/courierimap.html

Matthias Andree's Postfix site
http://www-dt.e-technik.uni-dortmund.de/~ma/postfix/

postfix2 cyrus-sasl 2 courier-imap tls
http://raven.elk.ru/unix/how-to/postfix2+cyrus-sasl2+kav+spa...

Ralf Hildebrandt -~hildeb-postfix-Welcome.shtml
http://www.stahl.bau.tu-bs.de/~hildeb/postfix/

RH71-Postfix-Maildrop-Courier-IMAP-How-I-did-it
http://www.firstpr.com.au/web-mail/RH71-Postfix-Courier-Mail.../

postfix-anti-UCE.txt
Рекомендую прочитать - антиспамовые правила для postfix.
Автор много лет ведет эту страничку иногда изменяя ее,
страница весьма пользуется популярностью.
http://jimsun.linxnet.com/misc/postfix-anti-UCE.txt

The Postfix Home Page
http://www.postfix.org/

X.509 Certificates
http://www.gallowglass.org/

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру