LinuxForum.Fans
Тема

Postfix и MAIL FROM:

Автор: r0ck3r 13 сообщений 6348 просмотров
#18715

Добрый день!
Настроил Postfix по пошаговому мануалу и в принципе все устраивало, но возникла некоторая проблема:
при коннекте через telnet, да и наверное многие почтовые клиенты смогу, можно указать MAIL FROM: billgates@microsoft.com и сервер на это не ругается((( вот например если проделать это на smtp.mail.ru то сервер говорит:
501 sender address must match authenticated user
ну или мой хостинг-провайдер на аналогичную процедуру сообщает что я могу указать только свой домен....
есть идеи как эту ситуацию можно решить?

#18724

а по какому мануалу настраивал? у тебя похоже на open relay.

#18729

Я настраивал вот по этому мануалу и у меня такая же проблема

#18741
Loky написал:
а по какому мануалу настраивал? у тебя похоже на open relay.

Open Relay, если я правильно понял, это SMTP-сервер работающий без авторизации. А у меня MAIL FROM: невозможно указать без авторизации AUTH LOGIN, но несмотря на это, после авторизации в MAIL FROM: можно указать любой обратный адрес

#18879
r0ck3r написал:
Добрый день!
Настроил Postfix по пошаговому мануалу и в принципе все устраивало, но возникла некоторая проблема:
при коннекте через telnet, да и наверное многие почтовые клиенты смогу, можно указать MAIL FROM: billgates@microsoft.com и сервер на это не ругается((( вот например если проделать это на smtp.mail.ru то сервер говорит:
501 sender address must match authenticated user
ну или мой хостинг-провайдер на аналогичную процедуру сообщает что я могу указать только свой домен....
есть идеи как эту ситуацию можно решить?

Читаем RFC822. Это базовый стандарт организации почты по smtp-протоколу. И после чтения оного труда приходим к выводу, что поле mail from: чисто информационное и никакой полезной сущности в почтовом протоколе не несет. Это только информация получателю письма - от кого присьмо пришло. Ни один почтовый сервер не станет проверять это поле на валидность в полном объеме, то есть на наличие реального почтового адреса billgates@microsoft.com. Максимум, что можно сделать - проверить почтовый домен на существование записи в DNS (mx-запись). Но проверять со стороны наличие реального почтового аккаунта на удаленном почтаре отправителя??? Это безумие. Кроме того, кто его тебе скажет?

Так что вывод один - полю mail from: в почте доверять всецело нельзя.

forkostya написал:
Я настраивал вот по этому мануалу и у меня такая же проблема

у меня иная проблема. Пошел по этому же мануалу. Снес напрочь все сделанные ранее настройки постфикса. И затык в первой же части. А именно - на дефолтных установках, приведенных в статье. Вот лог почтовый:

text
Mar 23 10:49:49 iNetServer postfix/smtpd[12551]: connect from localhost[127.0.0.1]
Mar 23 10:49:49 iNetServer postfix/smtpd[12551]: 437C46B55: client=localhost[127.0.0.1]
Mar 23 10:49:49 iNetServer postfix/cleanup[12554]: 437C46B55: message-id=<201003230749.o2N7nns6012550@iNetServer.ALMA.ru>
Mar 23 10:49:49 iNetServer postfix/qmgr[12525]: 437C46B55: from=<root@iNetServer.ALMA.ru>, size=648, nrcpt=1 (queue active)
Mar 23 10:49:49 iNetServer sendmail[12550]: o2N7nns6012550: to=alex@alma.ru, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30220, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (Ok: queued as 437C46B55)
Mar 23 10:49:49 iNetServer postfix/smtp[12555]: 437C46B55: to=<alex@alma.ru>, relay=none, delay=0.09, delays=0.08/0.01/0/0, dsn=5.4.6, status=bounced (mail for alma.ru loops back to myself)

Собственно проблема в последней строке. status - увы не ожидаемый. Как выправить?

#18903

настройки постфикса покажите

#18906
Hrafn написал:
настройки постфикса покажите

Взял копипастом из стать и заменил на свои имена нужные слова:

text
# cat main.cf
myorigin = copr.ru
myhostname = $myorigin
mydestination = iNetServer, localhost.localdomain, , localhost, $myorigin
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Fedora)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.
myhostname = iNetServer
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = iNetServer, localhost.localdomain, , localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#18912

во-первых, дважды встречаются myhostname и mydestination, причем разные

настройки ДНС для этого домена покажите еще, MX в частности

#18914

(mail for alma.ru loops back to myself)

#18937
Cruiser78 написал:
Добрый день!
Читаем RFC822. Это базовый стандарт организации почты по smtp-протоколу. И после чтения оного труда приходим к выводу, что поле mail from: чисто информационное и никакой полезной сущности в почтовом протоколе не несет. Это только информация получателю письма - от кого присьмо пришло. Ни один почтовый сервер не станет проверять это поле на валидность в полном объеме, то есть на наличие реального почтового адреса billgates@microsoft.com. Максимум, что можно сделать - проверить почтовый домен на существование записи в DNS (mx-запись). Но проверять со стороны наличие реального почтового аккаунта на удаленном почтаре отправителя??? Это безумие. Кроме того, кто его тебе скажет?

Так что вывод один - полю mail from: в почте доверять всецело нельзя.

если так, то получается что майл ру и мой хостинг провайдер сделали невозможное?
например, на mail.ru пытаюсь указать admin@mail.ru, получаю: 501 sender address must match authenticated user
делаю аналогичное у хостинг провайдера - получаю ответ, что могу указать в качестве отправителя только свой домен....

#18971
Hrafn написал:
во-первых, дважды встречаются myhostname и mydestination, причем разные

Я не знаю, насколько это критично. Данный текст перенесен копипастом из оригинальной статьи и там - тоже самое. Только myhostname другой.

Hrafn написал:
настройки ДНС для этого домена покажите еще, MX в частности

Вот вся локальная зона:

text
# cat corp.zone
$TTL 38400
corp.ru. IN SOA iNetServer. root.iNetServer.corp.ru. (
2010032301 ; serial
108000 ; refresh
1800 ; retry
1209600 ; expiry
604800)

corp.ru. IN NS iNetServer. mail.corp.ru. IN A 192.168.42.2 ; HELO/EHLO = mail.corp.ru corp.ru. IN A 192.168.42.2 ; HELO/EHLO = mail.corp.ru corp.ru. IN MX 30 iNetServer.corp.ru. corp.ru. IN TXT "v=spf1 a:mail.corp.ru -all"

iNetServer IN A 192.168.43.2 FileServer IN A 192.168.43.4 DBServer IN A 192.168.43.6 Server2003 IN A 192.168.43.9 Server IN A 192.168.43.3 Oxrtrud IN A 192.168.43.30 www IN A 195.242.3.252 www.local IN CNAME iNetServer

forkostya написал:
(mail for alma.ru loops back to myself)

Это то я прочитал. Я не понял - как с этим бороться...

r0ck3r написал:
если так, то получается что майл ру и мой хостинг провайдер сделали невозможное?
например, на mail.ru пытаюсь указать admin@mail.ru, получаю: 501 sender address must match authenticated user
делаю аналогичное у хостинг провайдера - получаю ответ, что могу указать в качестве отправителя только свой домен....

Неправильный вывод. Конкретный почтовый сервер можно научить отправлять письма только от собственных юзерей. И принимать почту тоже только от собственых юзерей и всех остальных, которые на нем не зарегистрированы, с других доменов. Но проверить валидность полного почтового адреса отправителя с другого почтового сервера - невозможно. Тот же майл.ру прекрасно скушает адрес отправителя usama@bin.laden.us и не поморщится. Если, конечно, есть такой почтовый сервер bin.laden.us. А если нет - то посчитает такое письмо спамом.

#19153
Cruiser78 написал:

Неправильный вывод. Конкретный почтовый сервер можно научить отправлять письма только от собственных юзерей. И принимать почту тоже только от собственых юзерей и всех остальных, которые на нем не зарегистрированы, с других доменов. Но проверить валидность полного почтового адреса отправителя с другого почтового сервера - невозможно. Тот же майл.ру прекрасно скушает адрес отправителя usama@bin.laden.us и не поморщится. Если, конечно, есть такой почтовый сервер bin.laden.us. А если нет - то посчитает такое письмо спамом.

Нет необходимости проверять отправителя другого почтового адреса. Попытаюсь объяснить еще раз:
Необходимо, чтобы почтовый сервер реджектил письмо с адресом отправителя, не равным учетной записи на сервере, так же, как это делают популярные почтовые службы. Не думаю, что майл.ру и прочие использвуют собственные программные решения.
Еще один подобный пример. Существует хостинг-провайдер hoster.ru, у которого у меня зарегистрировано несколько доменов. Если я, зайдя под своим адресом xxx@yyy.ru, пытаюсь указать отправителя, то получаю REJECT с сообщением о том, что я могу указывать в поле MAIL FROM: только домен yyy.ru. Если есть необходимость, могу предоставить почтовую учетную запись у вышеназванного провайдера.
P.S. на мэйл.ру, кстати если я пытаюсь указать в этом поле учетку своего почтового сервера (которую он, в соответствии с вышесказанным должен схавать) я получаю аналогичный REJECT.

P.P.S.
нашел какой-то мануал:
smtpd_sender_restrictions = permit_mynetworks,
check_sender_access hash:$base/sender_access,
reject_authenticated_sender_login_mismatch,
reject_unknown_sender_domain,
reject_unlisted_sender,
reject_unverified_sender

сейчас буду проверять

взял с одного форума:


И чтобы принимать почту только со своих адресов, надо в эти restrictions добавить "reject_authenticated_sender_login_mismatch".
Т.е. будут отсекаться авторизованные пользователи, пытающиеся отправить почту с чужого адреса.

У меня примерно так:

smtpd_sender_restrictions = permit_mynetworks, reject_authenticated_sender_login_mismatch, .........

Пользователи проверяются по smtpd_sender_login_maps.
У меня все ящики в mysql, поэтому так:

smtpd_sender_login_maps = mysql:/usr/local/etc/postfix/mysql_login_maps.cf

-- mysql_login_maps.cf -- примерно такой
user = ...
password = ...
hosts = localhost
dbname = ...
table = mailbox
select_field = username
where_field = username
additional_conditions =

ну по идее то что доктор прописал, но есть две загвоздки.
1) Тема оставлена в 2006 году и по всей видимости версия постфикса немного поменялась( то есть файл конфига, насколько я понял выглядит так:
user = mailuser
password = password
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM view_users WHERE email='%s'

2) Такая конструкция не работает(



Пока ничего не получилось((
Может все-таки есть идеи?

Войдите или зарегистрируйтесь, чтобы ответить.