Добрый день, уважаемые!Итак, есть две проблемы.
Проблема 1ая.
Я попытался настроить Postfix на работу с TLS. Как итог - отправляется наружу из локалки. Снаружи не принимается.
Кусок main.cf с настройками TLS:
++++++++++++++++++++++++++++++++++++++++++++++++
smtp_use_tls = no
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_key_file = /usr/local/etc/postfix/ssl/unencrypted-key.pem
smtpd_tls_cert_file = /usr/local/etc/postfix/ssl/cert.pem
smtpd_tls_CAfile = /usr/local/etc/postfix/ssl/CAcert.pem
smtpd_tls_session_cache_database = btree:/var/db/postfix/smtpd_tls_session_cache
smtpd_tls_loglevel = 3
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_sasl_password_maps = hash:/usr/local/etc/postfix/sasl/sasl_passwd
tls_random_source = dev:/dev/urandom
++++++++++++++++++++++++++++++++++++++++++++++++В логах упорно пишет Session encryption required, хотя у меня же "may"?
Чего я хотел от TLS? хотел, чтобы мои клиенты отправляли почту через 465 порт с TLS. Извне почту получать, конечно же, без шифрования, по 25 порту.
master.cf (привожу то, что касается 25/465 портов):
++++++++++++++++++++++++++++++++++++++++++++++++
smtp inet n - n - - smtpd
-o content_filter=spamassassin
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
#submission inet n - n - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
# -o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
++++++++++++++++++++++++++++++++++++++++++++++++Как заставить мой сервак принимать почту от, скажем, mail.ru и не требовать от них использования шифрования?
http://www.postfix.org/TLS_README.html#quick-start - читал, не помогло.
Вторая проблема - это какое то невероятное количество возвратов.
Отследил при помощи pflogsumm.
За примерно 5 минут получил 11 тысяч попыток доставить почту Mailer Daemon.
++++++++++++++++++++++++++++++++++++++++++++++++
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
C49975E275D 27755 Fri Nov 16 20:15:59 ukrashenie.fasadov@ukr.net
kuzimovich@dneprokor.com.ua05C425E275E 488747 Fri Nov 16 20:16:00 meta.stellagi@ukr.net
stepan@aport.crimea.com0651F5E275F 54171 Fri Nov 16 20:16:00 novogodnie.tury@ukr.net
car@selena.kherson.ua109315E2760 5796 Fri Nov 16 20:16:00 shalene-svyato@ukr.net
chashkorez@list.ru22D105E2761 5154 Fri Nov 16 20:16:00 billbordy31@ukr.net
kostya_k86@mail.ru605485E2762 5797 Fri Nov 16 20:16:00 shalene-svyato@ukr.net
chashkina@a-snab.ru606FD5E2763 27750 Fri Nov 16 20:16:00 ukrashenie.fasadov@ukr.net
fiveportalru@gmail.comC531C5E2738 27753 Fri Nov 16 20:16:00 ukrashenie.fasadov@ukr.net
vitalij.kroplis@yandex.ua95B385E2764 54160 Fri Nov 16 20:16:01 novogodnie.tury@ukr.net
zoloozdolddz@mail.ruBEF875E2765 3672 Fri Nov 16 20:16:01 billbordy31@ukr.net
kostya@uma.dp.uaD5E2F5E2766 4044 Fri Nov 16 20:16:01 billbordy31@ukr.net
kostya_mail@ukr.net2ED7D5E2767 4105 Fri Nov 16 20:16:02 email_ss@ukr.net
den1111@ukr.net89DD85E2768 54167 Fri Nov 16 20:16:02 novogodnie.tury@ukr.net
info@ukrcognita.com.ua
++++++++++++++++++++++++++++++++++++++++++++++++Рядом стоит сервер на сендмыле - там такая же проблема. Постоянны возвраты писем постмастеру о невозможности ВЕРНУТЬ письмо отправителю. Причем, последний столбец - это Sender/Recipient. Т.е. отправитель из домена ukr.net, а получатель произвольный.
Меня ДДОСят? У меня вирус в сети? Как это можно отловить?
заранее благодарю за советы
Продолжу.Судя по логам письмо поступает с совершенного левого ip - это адресат. Мой почтовик не используется, как релей, - указывается также и левый релей. В качестве получателя указывают какого-либо юзера на, например, mail.ru.
Т.е. получается, что посылается письмо с фальшивыми FROM и REPLY TO на несуществующего пользователя в домене. Так как пользователь в моем домене не существует, то мой сервер пытается доставить почту либо FROM, либо REPLY TO.
И если FROM точно фальшивый, то REPLY TO может существовать. В этом случае совершенно ничего не подозревающему пользователю упадет письмо, что посланное "им" письмо не доставилось. Какое письмо? Когда? Кому? Начинается чтение содердимого возврата - а там спам.
В случае, если и REPLY TO не существует, то возвраты перенаправляются моему постмастеру.
Тем не менее, вопрос для меня остается открытым - как эту дыру закрыть?
По первому вопросу - вот рабочий конфиг с моего компа (самоподписанные сертификаты):### TLS:
tls_random_source = dev:/dev/urandom
smtp_tls_note_starttls_offer = yes
smtp_tls_loglevel = 2
smtp_tls_security_level = may
smtp_tls_enforce_peername = no
smtp_use_tls = yessmtpd_tls_security_level = may
smtpd_tls_key_file = /etc/postfix/certs/smtpd.pem
smtpd_tls_cert_file= /etc/postfix/certs/smtpd.pem
smtpd_tls_loglevel = 2
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_ask_ccert = no
smtpd_tls_req_ccert = no
smtpd_tls_auth_only = yes
smtpd_tls_ccert_verifydepth = 0
По второму вопросу - читайте про reject_unlisted_recipient
> По первому вопросу - вот рабочий конфиг с моего компа (самоподписанные сертификаты):И в master.cf стоит следующее:
smtps inet n - y - 50 smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_tls_security_level=encrypt
-o smtpd_client_port_logging=yes
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=reject_unlisted_sender,permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
-o smtpd_client_connection_count_limit=2
> По первому вопросу - вот рабочий конфиг с моего компа (самоподписанные сертификаты):
> По второму вопросу - читайте про reject_unlisted_recipientИспользуется, но не спасает
вот кусок конфига, где описаны ограничения:
+++++++++++++++++++++++++++++++++
#4. Ограничения recipient_restrictions, sender_restrictions, client_restrictions, helo_restrictions, etrn_restrictions, data_restrictionssmtpd_etrn_restrictions =
permit_mynetworks,
reject
smtpd_helo_restrictions=
permit_mynetworks,
reject_invalid_helo_hostname,
reject_invalid_hostname,
check_helo_access hash:/usr/local/etc/postfix/checks/access_helo
smtpd_data_restrictions=
permit_mynetworks,
reject_multi_recipient_bounce,
reject_unauth_pipelining
smtpd_sender_restrictions=
check_sender_access hash:/usr/local/etc/postfix/checks/access_sender,
permit_sasl_authenticated,
permit_mynetworks,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_unverified_sender,
check_sender_access hash:/usr/local/etc/postfix/checks/access_sender
smtpd_recipient_restrictions=
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
check_policy_service inet:127.0.0.1:10023,
reject_unauth_pipelining,
reject_unknown_client_hostname,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unverified_recipient,
reject_unlisted_recipient,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_unverified_sender,
smtpd_client_restrictions=
permit_sasl_authenticated,
reject_plaintext_session,
check_client_access hash:/usr/local/etc/postfix/checks/access_client,
check_client_access pcre:/usr/local/etc/postfix/checks/access_client.pcre
+++++++++++++++++++++++++++++++++
Продолжу.На всякий случай проверил все машины в сети этим:
- AVZ
- CureIt
- Nod32Проверял предварительно выдернув из сети, после проверки вырубал комп, и тогда подключал проводок обратно.
После того, как проверил все машины и серваки на виндах, пошел смотреть в почту.
Проблема с MAIL DELIVERY осталась. Какое то сумасшедшее количество возвратов.
Postfix настроен на работу с LDAP. Там хранятся все виртуальные пользователи. При проверке postfix смотрит в базу на предмет валидности юзера и принимает решение о приеме письма или отлупе.
Как в таком случае можно отослать в мой домен письмо на несуществуещий адрес?
Или мне шлют на несуществующий адрес, но поля FROM и REPLY TO поддельные. В итоге мой сервер пытается отправить по этим поля уведомление о возврате. Если это так работает, то как можно это закрыть?
При этом в логе черным по белому (а вернее белым по черному) написано, что
++++++++++++++++++++++++
from=<ukrashenie.fasadov@ukr.net> to <kuzimovich@dneprokor.com.ua>
++++++++++++++++++++++++Как тогда мой сервер принимает это письмо и пытается отправить уведомление о возврате?
В общем, я не совсем понимаю
Что, неужели никто не сталкивался?
>[оверквотинг удален]
> smtpd_tls_security_level = may
> smtpd_tls_key_file = /etc/postfix/certs/smtpd.pem
> smtpd_tls_cert_file= /etc/postfix/certs/smtpd.pem
> smtpd_tls_loglevel = 2
> smtpd_tls_received_header = yes
> smtpd_tls_session_cache_timeout = 3600s
> smtpd_tls_ask_ccert = no
> smtpd_tls_req_ccert = no
> smtpd_tls_auth_only = yes
> smtpd_tls_ccert_verifydepth = 0Вроде это то, что нужно. Во всяком случае теперь я не получаю отлупов, пытаясь послать почту в свой домен о том, что необходимо использовать шифрование.
Шифрование предполагалось только при авторизации и отправке писем от меня, от моих пользователей. Но все остальные серверы, конечно же, должны иметь возможность по 25 порту передать почту без всяких сложностей.
Спасибо за подсказку.
По второму вопросу:
Валидность юзера проверялась на этапе локальной доставки доставки/
Сделал на этапе smtp-сессии - пошли нормальные отлупы. Я еще помониторю ситуацию, но тысячу MAILER DAEMON'ов я больше не вижу.
Конечно, ведь он принимал почту от кого угодно...
Но, есть новая проблема:
Nov 18 20:47:38 mail postfix/smtpd[19660]: NOQUEUE: reject: RCPT from f97.mail.ru[217.69.129.120]: 550 5.1.7 <myPersonalMail@mail.ru>: Sender address rejected: undeliverable address: host mxs.mail.ru[94.100.176.20] said: 550 Unroutable sender address (in reply to MAIL FROM command); from=<myPersonalMail@mail.ru> to=<mycorporatemail@mydomain.ru> proto=ESMTP helo=<f97.mail.ru>
Теперь он тупо не видит пользователя в виртуальной базе... Вернее, он и не смотрит в виртуальную базу. Он смотрит в локальную passwd.
куски конфига:
Код:
myhostname = mail.mydomain.ru
mydomain = mydomain.ru
myorigin = $mydomain
inet_interfaces = all
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost.$myhostname, localhost
mynetworks_style = host
...
virtual_transport = dovecot
virtual_mailbox_base = /usr/home/virtualmail
virtual_mailbox_domains = ldap:$config_directory/ldap/virtual_domain.cf
virtual_minimum_uid = 100
virtual_uid_maps = ldap:$config_directory/ldap/virtual_uid.cf
virtual_gid_maps = $virtual_uid_maps
virtual_mailbox_maps = ldap:$config_directory/ldap/virtual_mailbox_recipient.cf
virtual_alias_maps = ldap:$config_directory/ldap/virtual_aliases.cf
dovecot_destination_recipient_limit = 1
mailbox_transport = dovecot
smtpd_sender_login_maps = ldap:$config_directory/ldap/virtual_sender_login.cf
В cf-ках лежат данные о доступе к LDAP-каталогу.Инфу брал отсюдова:
http://www.lissyara.su/articles/freebsd/mail/postfix+dovecot.../
> Но, есть новая проблема:
> Nov 18 20:47:38 mail postfix/smtpd[19660]: NOQUEUE: reject: RCPT from f97.mail.ru[217.69.129.120]:
> 550 5.1.7 <myPersonalMail@mail.ru>: Sender address rejected: undeliverable address:
> host mxs.mail.ru[94.100.176.20] said: 550 Unroutable sender address (in reply to MAIL
> FROM command); from=<myPersonalMail@mail.ru> to=<mycorporatemail@mydomain.ru> proto=ESMTP
> helo=<f97.mail.ru>Unroutable sender address (in reply to MAIL FROM command)
^^ вот это похоже на какие-то траблы с днс.Попробуйте убрать опции
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_unverified_sender,из smtpd_sender_restrictions
>[оверквотинг удален]
>> host mxs.mail.ru[94.100.176.20] said: 550 Unroutable sender address (in reply to MAIL
>> FROM command); from=<myPersonalMail@mail.ru> to=<mycorporatemail@mydomain.ru> proto=ESMTP
>> helo=<f97.mail.ru>
> Unroutable sender address (in reply to MAIL FROM command)
> ^^ вот это похоже на какие-то траблы с днс.
> Попробуйте убрать опции
> reject_unknown_sender_domain,
> reject_unlisted_sender,
> reject_unverified_sender,
> из smtpd_sender_restrictionsУбрал
В общем, проблему с TLS решил.
Разбираясь с возможностью приема писем дальше осознал, что что то не в порядке в связке Postfix+LDAP.
Postfix упорно не хочет смотреть в базу LDAP и выдает мне ошибку:
++++++++++++++++++++++++++++++
Recipient address rejected: User unknown in local recipient table
++++++++++++++++++++++++++++++Т.е. пытается искать в локальном passwd, когда надо искать пользователя в LDAP.
Корень проблемы, как мне кажется, в опциях mydomain в mydestination.
Я обслуживаю 3 домена:
- gooddomain1.ru
- gooddomain2.ru
- gooddomain3.ruДля виртуальной конфигурации я обслуживание этих доменов указал так:
++++++++++++++++++++++++++++++
virtual_mailbox_domains = ldap:$config_directory/ldap/virtual_domain.cf
++++++++++++++++++++++++++++++В этом конфиге указаны параметры для выборки данных о виртуальных доменах, хранящихся в LDAP. Через postmap проверил - отрабатывает прекрасно, получаю ровно то, что нужно.
Поэтому эта запись эквивалентна:
++++++++++++++++++++++++++++++
virtual_mailbox_domains = gooddomain1.ru, gooddomain2.ru, gooddomain3.ru
++++++++++++++++++++++++++++++Пробовал указывать и так и так.
А следующие параметры у меня заданы так:
++++++++++++++++++++++++++++++
mydomain = gooddomain1.ru
mydestination = $mydomain, $myhostname, localhost.$mydomain, localhost.$myhostname, localhost
++++++++++++++++++++++++++++++Т.е. получается, что обслуживаемый домем gooddomain1.ru указан и для локальной базы. Поэтому Postfix пытается туда посмотреть.
Как это правильно настроить?
У меня один домен и юзеры в passwd, так что здесь уже не подскажу :(
> У меня один домен и юзеры в passwd, так что здесь уже
> не подскажу :(Ну, вроде бы проблески надежды наблюдаются
Отлупы делаются, если отправитель неверный и проверяется это на этапе smtp-сессии, а не на этапе локальной доставки
Почта улетает и прилетает.
Правда что то уж очень бунтует грейлистинг, но это дело поправимое
Еще помониторю ситуацию, а пока всем огромное спасибо.
На будущее, если кто будет искать, то мне помогло правильное указание параметров mydomain и mydestination.