The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как заставить Postfix принимать почту не только из локалки"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Denis email(??) on 23-Май-06, 10:54 
Здравствуйте, уважаемый all.
Сразу пардон если вопрос уже поднимался на этом форуме, но опыта у меня пока немного, и сходу найти путевое обсуждение с путевым решением проблемы мне не удалось, потому и пишу.
Итак, к делу:
Почтовый сервер FreeBSD + Postfix + фильтр DrWeb. Куча почтовых аккаунтов.

Проблема: Исходящая почта принимается только от клиентов, находящихся в локальной сети. Т.е. из дома, например, письмо уже не отправишь - Postfix не примет его (что-то типа "relay access denied"). Хотя какой же это relaying - отправка письма от своего имени через свой же SMTP-сервер?
С другой строны, в maillog вижу письма, пришедшие извне локальной сети, но содержащие в качестве адреса отправителя адреса моих локальных пользователей:

postfix/smtpd[34975]: connect from unknown[xx.yyy.16.166]
postfix/smtpd[34975]: A91AE5C093: client=unknown[xx.yyy.16.166]
postfix/cleanup[34979]: A91AE5C093: message-id=<20060519065805.A91AE5C093@mydomain>
postfix/qmgr[93961]: A91AE5C093: from=<postmaster@mydomain>, size=56383, nrcpt=1 (queue active)
postfix/smtpd[34975]: disconnect from unknown[xx.yyy.16.166]
drweb-postfix[34981]: scan: the message(drweb.tmp.1I0KRr) sent by postmaster@mydomain to rector@mydomain has been cured or infected parts have been removed
drweb-postfix[34981]: scan: the message(drweb.tmp.1I0KRr) sent by postmaster@mydomain to rector@mydomain is passed

Очевидно, адрес отправителя подделан. Но самое главное: Postfix принял письмо, исходящее с клиента IP xx.yyy.16.166, находящегося вне моей локальной сети!
Как же так - от моих пользователей, находящихся вне локалки, не принимает, а от спамеров принял.
Если кто-нибудь сталкивался с подобным, подскажите, пожалуйста, решение этой проблемы.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Tigran Parsadanian on 23-Май-06, 12:13 
Приведите пожалуйста postconf.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Denis email(??) on 23-Май-06, 13:47 
>Приведите пожалуйста postconf.
%postconf -n
alias_database = hash:/etc/mail/aliases
alias_maps = hash:/etc/mail/aliases
command_directory = /usr/local/sbin
config_directory = /usr/local/etc/postfix
daemon_directory = /usr/local/libexec/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
message_size_limit = 4096000
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = xxx.yyy.ru
myhostname = xxx.yyy.ru
mynetworks = 192.168.1.0/24, 127.0.0.0/8
mynetworks_style = subnet
myorigin = $mydomain
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
relay_domains =
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
smtpd_recipient_limit = 10
smtpd_recipient_restrictions =
  permit_sasl_authenticated,
  permit_mynetworks,
  reject_unauth_destination,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unknown_sender_domain,
  reject_unknown_recipient_domain,
  reject_unauth_pipelining,
  reject_rbl_client list.dsbl.org,
  reject_rbl_client relays.ordb.org,
  reject_rbl_client dynablock.wirehub.net,
  reject_rbl_client blackholes.wirehub.net,
  reject_rbl_client dnsbl.njabl.org,
  reject_rbl_client dialups.mail-abuse.org,
  reject_rbl_client dul.ru
smtpd_sender_restrictions =
  permit_mynetworks,
  permit_auth_destination,
  permit_sasl_authenticated,
  reject_unknown_sender_domain,
  reject
unknown_local_recipient_reject_code = 550

Вывод postconf -n, отформатировал для удобочитаемости. xxx.yyy.ru - мой домен. Если нужен полный вывод postconf, скажите - выложу.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Tigran Parsadanian on 23-Май-06, 16:34 
А если так?
relay_domains = $mydestination
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

7. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Denis email(??) on 24-Май-06, 11:14 
>А если так?
>relay_domains = $mydestination
А разве relay_domains по умолчанию уже не включает $mydestination ?
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

4. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от unk (??) on 23-Май-06, 19:12 
>Проблема: Исходящая почта принимается только от клиентов, находящихся в локальной сети. Т.е.
>из дома, например, письмо уже не отправишь - Postfix не примет
>его (что-то типа "relay access denied"). Хотя какой же это relaying
>- отправка письма от своего имени через свой же SMTP-сервер?
Это и есть самый настоящий релеинг. Прочуствуйте разницу:
1) Принять от кого-то для своего домена.
2) Принять от кого-то и переслать кому-то.

>Очевидно, адрес отправителя подделан. Но самое главное: Postfix принял письмо, исходящее с
>клиента IP xx.yyy.16.166, находящегося вне моей локальной сети!
Абсолютно нормально.

>Как же так - от моих пользователей, находящихся вне локалки, не принимает,
>а от спамеров принял.
И от ваших пользователей примет, но релеить не будет.

>Если кто-нибудь сталкивался с подобным, подскажите, пожалуйста, решение этой проблемы.
Через regexp можно разрешить использовать ваш домен в MAIL FROM только пользователям lan и  прошедшим sasl.
Судя по вашему postconf -n SASL настроен, и релей для прошедших авторизацию разрешен...
Если это не работает, покажите лог с отлупом postfix от вашего "домашнего" пользователя прошедшего sasl

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Tigran Parsadanian on 24-Май-06, 10:10 
Зачем заморачиватся с SASL-ом, какой SASL!!!?????

Какой IP адресс ты получаешь из дома?
У тебя поставленно что-бы пускал только с "mynetworks = 192.168.1.0/24, 127.0.0.0/8"
поэтому и не принимает.
Тоесть ты не можешь отправить письмо с адреса чтото@yourdomain.com на любой другой адрес через твой сервер. он скажет relay access denied!
Пропиши IP адресс который ты получаешь дома в mynetworks и все заработает.


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

6. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Denis email(??) on 24-Май-06, 11:10 
>Зачем заморачиватся с SASL-ом, какой SASL!!!?????
>
>Какой IP адресс ты получаешь из дома?
>У тебя поставленно что-бы пускал только с "mynetworks = 192.168.1.0/24, 127.0.0.0/8"
>поэтому и не принимает.
>Тоесть ты не можешь отправить письмо с адреса чтото@yourdomain.com на любой другой
>адрес через твой сервер. он скажет relay access denied!
>Пропиши IP адресс который ты получаешь дома в mynetworks и все заработает.
>

Из дома работаю с почтой не только я, но и многие наши сотрудники. Все работают по диалапу и заранее неизвестно, с каким IP-адресом тот или иной пользователь появится в Интернете. Включать в mynetworks весь диапазон IP-адресов провайдера очень не хочется.
Уж лучше SASL.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

8. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от Denis email(??) on 24-Май-06, 11:17 
>>Проблема: Исходящая почта принимается только от клиентов, находящихся в локальной сети. Т.е.
>>из дома, например, письмо уже не отправишь - Postfix не примет
>>его (что-то типа "relay access denied"). Хотя какой же это relaying
>>- отправка письма от своего имени через свой же SMTP-сервер?
>Это и есть самый настоящий релеинг. Прочуствуйте разницу:
>1) Принять от кого-то для своего домена.
>2) Принять от кого-то и переслать кому-то.
>
>>Очевидно, адрес отправителя подделан. Но самое главное: Postfix принял письмо, исходящее с
>>клиента IP xx.yyy.16.166, находящегося вне моей локальной сети!
>Абсолютно нормально.
>
>>Как же так - от моих пользователей, находящихся вне локалки, не принимает,
>>а от спамеров принял.
>И от ваших пользователей примет, но релеить не будет.
Понял. То есть письма, идущие в ящики моих пользователей, Postfix принимает от любого клиента - как из локалки, так и извне.
Спасибо за разъяснение.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

9. "Как заставить Postfix принимать почту не только из локалки"  
Сообщение от odip email(ok) on 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+spamassassin+courier-imap+tls+mysql+FreeBSD4/postfix2+cyrus-sasl2+kav+spamassassin+courier-imap+tls+mysql+FreeBSD4.html

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-Maildrop-IMAP/

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/

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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