Всем привет
Установлен postfix с включенной smtp авторизацией.
Так же есть
smtpd_sender_restrictions = reject_sender_login_mismatch
smtpd_sender_login_maps = mysql:/etc/postfix/sql/sender_logins.sqlОднако в логах видно, как некто отправляет почту от имени например bob@mydomain.ru для существующего пользователя моего домена. И в этом случае почта доставляется
Можно ли как либо запретить принимать почту от якобы пользователей моего домена без авторизации?
/etc/postfix/main.cf:
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject_unauth_destination,
check_sender_access hash:/etc/postfix/sender_access,
...header_checks = regexp:/etc/postfix/header_checks
/etc/postfix/sender_access:
mydomain.ru REJECT/etc/postfix/header_checks:
/^From:.*@mydomain\.ru/ REJECT
>/etc/postfix/main.cf:
>smtpd_recipient_restrictions =
> permit_sasl_authenticated,
> reject_unauth_destination,
> check_sender_access hash:/etc/postfix/sender_access,
> ...
>
>header_checks = regexp:/etc/postfix/header_checks
>
>/etc/postfix/sender_access:
> mydomain.ru REJECT
>
>/etc/postfix/header_checks:
> /^From:.*@mydomain\.ru/ REJECTА в этом случае внутренняя переписка не отреджектится?
>А в этом случае внутренняя переписка не отреджектится?
Пардон, забыл./etc/postfix/master.cf:
192.168.0.1:smtp inet n - n - - smtpd
1.2.3.4:smtp inet n - n - - smtpd
-o cleanup_service_name=cleanup-extcleanup-ext unix n - n - 0 cleanup
-o header_checks=regexp:/etc/postfix/header_checks192.168.0.1 - адрес внутреннего интерфейса, 1.2.3.4 - внешнего. Теперь header_checks проверяется только для внешней почты.
А не проще так:
/etc/postfix/main.cf:
smtpd_sender_restrictions =
permit_sasl_authenticated,
reject
То есть просто запретить чтолибо отправлять без аутентификации.
>А не проще так:
> /etc/postfix/main.cf:
>smtpd_sender_restrictions =
> permit_sasl_authenticated,
> reject
А как Вы будете получать почту для своего домена?
По крайней мере, авторизация корректно заработала только в таком ключе, а без reject по логам было видно, когда вводился неправильный пасворд, либо часть правильного, что авторизация провалена и разрешение на отправку почты всеравно давалось:
smtpd_sender_restrictions =
permit_mynetwork,
permit_sasl_authenticated
И если в клиенте авторизация была отключена, то сервер не заставлял клиента принудительно авторизоваться.
Сначала Вы писали так
>smtpd_sender_restrictions =
> permit_sasl_authenticated,
> rejectтеперь вот так
>smtpd_sender_restrictions =
> permit_mynetwork,
> permit_sasl_authenticatedОпределитесь, уважаемый. А так все это - пустая трата времени. Ставьте конкретную задачу, приводите свои конфиги, будем посмотреть.
Вот так не работало:
smtpd_sender_restrictions =
permit_mynetwork,
permit_sasl_authenticated
Заработало только так:
smtpd_sender_restrictions =
permit_sasl_authenticated,
reject
Ну и так вот тоже:
smtpd_sender_restrictions =
permit_mynetwork,
permit_sasl_authenticated,
reject
А параметр permit_mynetwork насколько я понимаю разрешает отправку хостам прописанным в $mynetwork тоесть если у меня там только localhost, то от него я могу отсылать что угодно.
То есть авторизация без reject не работает. А мне нужна именно принудительная авторизация.
Я с Вас удивляюсь. Вроде по-русски пишу. Покажите конфигурацию (postconf -n хотя бы) и поставьте нормально задачу. Нет - разбирайтесь сами.
postconf -n :
alias_database = hash:/usr/local/etc/postfix/aliases
alias_maps = hash:/usr/local/etc/postfix/aliases
broken_sasl_auth_clients = yes
command_directory = /usr/local/sbin
config_directory = /usr/local/etc/postfix
daemon_directory = /usr/local/libexec/postfix
debug_peer_level = 2
default_privs = nobody
html_directory = no
local_recipient_maps = $virtual_mailbox_maps $virtual_maps $transport_maps
mail_owner = postfix
mail_spool_directory = /var/mail
mailq_path = /usr/local/bin/mailq
manpage_directory = /usr/local/man
mydomain = domain.com
myhostname = mail.domain.com
mynetworks = 127.0.0.0/8
mynetworks_style = host
newaliases_path = /usr/local/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
relay_domains = $transport_maps
sample_directory = /usr/local/etc/postfix
sendmail_path = /usr/local/sbin/sendmail
setgid_group = maildrop
smtp_sasl_security_options = noanonymous
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks, rej ect_unauth_destination
smtpd_sasl_application_name = smtpd
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = $smtp_sasl_security_options
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
transport_maps = mysql:/usr/local/etc/postfix/sql/transport.cf
unknown_local_recipient_reject_code = 550
virtual_alias_maps = mysql:/usr/local/etc/postfix/sql/aliases.cf
virtual_gid_maps = mysql:/usr/local/etc/postfix/sql/gids.cf
virtual_mailbox_base = /var/mail/virtual
virtual_mailbox_maps = mysql:/usr/local/etc/postfix/sql/users.cf
virtual_uid_maps = mysql:/usr/local/etc/postfix/sql/uids.cfЗадача, настроить smtp авторизацию, без авторизации никому не разрешать отправку почты.
>smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks, reject_unauth_destination
>smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject
Судя по этим параметрам Вы еще не разобрались с postfix. Вообщем сделайте так
smtpd_sender_restrictions =
smtpd_recipient_restrictions = permit_sasl_authenticated, reject_unauth_destination
>Задача, настроить smtp авторизацию, без авторизации никому не разрешать отправку почты.
Ну поскольку топик все таки создавал я - позволю себе вмешаться :) Задача все таки не такая: задача вынесена в сабж топика :)
Для Вашей задачи я предложил вариант. Только есть одно НО. Если Ваши SASL-пользователи будут отправлять почту "снаружи", то header_checks придется убрать. Как вариант можно для таких пользователей повесить еще один внешний smtpd на нестандартном порту (2525) без header_checks и настроить их программы отправлять почту через него.
To jonatan:
Сделал опции как рекомендовали.
Отмечаю в The Bat! что сервер требует авторизацию, авторизуюсь нормально:
domain postfix/smtpd[22015]: connect from ip10.net10.domain.net[10.10.10.10]
domain postfix/smtpd[22015]: CD2B14B7B4F: client=ip10.net10.domain.net[10.10.10.10], sasl_method=LOGIN, sasl_username=longer@domain.com
domain postfix/smtpd[22015]: EB1CA4B7B4F: client=ip10.net10.domain.net[10.10.10.10], sasl_method=LOGIN, sasl_username=longer@domain.com
domain postfix/cleanup[22017]: EB1CA4B7B4F: message-id=<1153296976.20050927215555@domain.com>
domain postfix/qmgr[22011]: EB1CA4B7B4F: from=<longer@domain.com>, size=739, nrcpt=1 (queue active)
domain postfix/virtual[22018]: EB1CA4B7B4F: to=<mail@domain.com>, relay=virtual, delay=1, status=sent (delivered to maildir)
domain postfix/qmgr[22011]: EB1CA4B7B4F: removed
domain postfix/smtpd[22015]: disconnect from ip10.net10.domain.net[10.10.10.10]Снимаю отметку в The Bat!, о том что SMTP сервер требует авторизацию, и все равно письмо уходит:
domain postfix/smtpd[22029]: connect from ip10.net10.domain.net[10.10.10.10]
domain postfix/smtpd[22029]: 30D034B7B4F: client=ip10.net10.domain.net[10.10.10.10]
domain postfix/smtpd[22029]: 4631F4B7B4F: client=ip10.net10.domain.net[10.10.10.10]
domain postfix/cleanup[22032]: 4631F4B7B4F: message-id=<60789068.20050927215733@domain.com>
domain postfix/qmgr[22027]: 4631F4B7B4F: from=<longer@domain.com>, size=728, nrcpt=1 (queue active)
domain postfix/virtual[22049]: 4631F4B7B4F: to=<mail@domain.com>, relay=virtual, delay=1, status=sent (delivered to maildir)
domain postfix/qmgr[22027]: 4631F4B7B4F: removed
domain postfix/smtpd[22029]: disconnect from ip10.net10.domain.net[10.10.10.10]вот мой smtpd.conf
pwcheck_method: auxprop
mech_list: login
sql_engine: mysql
sql_user: user
sql_passwd: password
sql_hostnames: localhost
sql_database: mail
sql_verbose: yes
sql_select: select password from users where login = '%u@%r'
Задача не решена, авторизация как бы работает, но как бы и не обязательная :(
Показывайте postconf -n
@domain.com - это не Ваш домен?
>Показывайте postconf -n
Он приведен парой постов выше, единственное, в нем замененый опции по ващему совету:
>Судя по этим параметрам Вы еще не разобрались с postfix. Вообщем сделайте так
>smtpd_sender_restrictions =
>smtpd_recipient_restrictions = permit_sasl_authenticated, >reject_unauth_destination
>@domain.com - это не Ваш домен?
Это мой домен.
Ну если Вы будете принимать почту для своего домена только от SASL-клиентов, тоsmtpd_sender_restrictions =
smtpd_recipient_restrictions = permit_sasl_authenticated, reject
>Ну если Вы будете принимать почту для своего домена только от SASL-клиентов,
>то
>
>smtpd_sender_restrictions =
>smtpd_recipient_restrictions = permit_sasl_authenticated, reject
Почему принимать? Читайте задачу, просили описать более четко.
Повторюсь - требуется авторизация, для отправки почты, не важно куда. user@domain.com будет отсылать письмо и авторизоваться при отправке почты и для user2@domain.com и для user@chuzhoy_domain.com, причем здесь "будете принимать почту для своего домена"?
Я уже все написал. Если Вы и после этого не можете разобраться, то дальнейшее общение не имеет смысла.
>Я уже все написал. Если Вы и после этого не можете разобраться,
>то дальнейшее общение не имеет смысла.
Да я собственно разобрался, и все у меня работает. Но не таким способом как вы предлагаете.
>Всем привет
>Установлен postfix с включенной smtp авторизацией.
Как поставить Postfix с smtp-авторизацией? прошу не пинать. В руководствах описыв. установка с применением MySQL. Зачем хранить всё в MySQL и как этой инф-ей работать? Прошу не пинать! Впервые делаю почт. систему на FreeBSD с "нуля".