EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-07 20:42:19
Я хочю чтобы мои локальные юзера не отсылали письма без авторизации
Для етого пишу такое:
Код: Выделить всё
acl_check_mail:
deny sender_domains = +local_domains
!authenticated = *
message = "Вы не авторизованы"
accept
Из вне все работает на УРА
Чюжое мыло:
Код: Выделить всё
pascal@XLAM4$ telnet uipanet.homeunix.org 25
Trying 82.207.127.16...
Connected to uipanet.homeunix.org.
Escape character is '^]'.
220 uipanet.homeunix.org ESMTP Exim 4.64 Sun, 07 Jan 2007 19:12:42 +0200
ehlo eswdadw
250-uipanet.homeunix.org Hello 91-40-207-82.pool.ukrtel.net [82.207.40.91]
250-SIZE 10485760
250-PIPELINING
250-AUTH PLAIN LOGIN CRAM-MD5
250-STARTTLS
250 HELP
mail from:qqq@mail.ru
250 OK
quit
Мое мыло:
Код: Выделить всё
pascal@XLAM4$ telnet uipanet.homeunix.org 25
Trying 82.207.127.16...
Connected to uipanet.homeunix.org.
Escape character is '^]'.
220 uipanet.homeunix.org ESMTP Exim 4.64 Sun, 07 Jan 2007 19:13:11 +0200
ehlo wawddawd
250-uipanet.homeunix.org Hello 91-40-207-82.pool.ukrtel.net [82.207.40.91]
250-SIZE 10485760
250-PIPELINING
250-AUTH PLAIN LOGIN CRAM-MD5
250-STARTTLS
250 HELP
mail from:pascal@uipanet.homeunix.org
550 "ВЫ не авторизованы"
^C^Cquit
quit
Но при отправки с локальной сети после "mail from:...." всегда "250 OK" в логе ето:
Код: Выделить всё
2007-01-07 19:38:23 no host name found for IP address 192.168.220.72
Соответственно по правилу "accept" оно спокойно уходит получятелю!!!!
Где я тут не прав???
Как исправить мое положение????
FreePascal
-
Хостинг HostFood.ru
-
Хостинг HostFood.ru
Тарифы на хостинг в России, от 12 рублей:
https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.:
https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах:
https://www.host-food.ru/domains/
-
zorg
- лейтенант
- Сообщения: 665
- Зарегистрирован: 2006-03-01 22:25:36
- Откуда: Санкт-Петербург
Непрочитанное сообщение
zorg » 2007-01-07 20:55:24
всего конфига не видно, но мож у тя правило по авторизации стоит после того как ты разрешил отправлять локалке?? потому они и не авторизуются?
Всё дело в перце!!
zorg
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-07 21:01:11
Вот и конф
Код: Выделить всё
primary_hostname = uipanet.homeunix.org
# Домены, для которых принимаем почту
domainlist local_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND (type='LOCAL' OR type='VIRTUAL')}}
# Домены, которым разрешено отправлять почту через данный сервер
domainlist relay_to_domains = ${lookup mysql{SELECT domain FROM domains WHERE domain='${domain}' AND type='RELAY'}}
# Включаем проверку на вирусы
hostlist relay_from_hosts = 127.0.0.1
av_scanner = clamd:127.0.0.1 3310
# Включаем проверку по содержимому письма
acl_smtp_mail = acl_check_mail
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_virus
qualify_domain = uipanet.homeunix.org
auth_advertise_hosts = *
daemon_smtp_ports = 25 : 465
# Включаем SSL-соединение
tls_on_connect_ports = 465
tls_advertise_hosts = *
tls_certificate = /usr/local/etc/exim/ssl/mail.pem
tls_privatekey = /usr/local/etc/exim/ssl/mail.pem
# Включаем лог действий сервера
log_selector = \
+all_parents \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run
allow_domain_literals = false
# Запрещаем привелигированным пользователям отправлять почту через данный сервер
never_users = root:daemon:bin
# Нет, им просто запрещается отправлять почту и все
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 30m
timeout_frozen_after = 3d
freeze_tell = postmaster
auto_thaw = 1h
message_size_limit = 10M
smtp_accept_max = 50
smtp_accept_max_per_connection = 50
smtp_connect_backlog = 50
smtp_accept_max_per_host = 25
split_spool_directory = true
remote_max_parallel = 15
# Подключем базу MySQL
hide mysql_servers = localhost/mail/exim/passeximmail
# Подключаем фильтры
begin acl
acl_check_mail:
deny sender_domains = +local_domains
!authenticated = *
verify = recipient
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
accept
acl_check_rcpt:
# accept hosts = :
deny message = "Недопустимые символы в адресе"
local_parts = ^.*[@%!/|] : ^\\.
accept local_parts = postmaster
domains = +local_domains
require verify = sender
deny message = HELO/EHLO required by SMTP RFC
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
# accept authenticated = *
deny message = "Убери нах свой IP откуда ненадо"
hosts = *:!+relay_from_hosts
condition = ${if eq{$sender_helo_name}{$sender_host_address}{true}{false}}
deny condition = ${if eq{$sender_helo_name}{$interface_address}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "Это мой IP иди в зад!!!"
# deny message = Go Away! You are spammer.
# condition = ${if match{$sender_host_name}{bezeqint\\.net|net\\.il|dialup|dsl|pool|peer|dhcp}{yes}{no}}
deny message = host is listed in $dnslist_domain
dnslists = sbl.spamhaus.org : \
relays.ordb.org : \
opm.blitzed.org : \
proxies.blackholes.easynet.nl
accept domains = +local_domains
endpass
message = unknown user
verify = recipient
# accept domains = +relay_to_domains
# endpass
# message = unrouteable address
# verify = recipient
# accept hosts = +relay_from_hosts
deny domains = !+local_domains
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
deny message = relay not permitted
acl_check_virus:
deny message = Messege rejected: Virus $malware_name) Found. Your message was successfully trashed.
malware = *
accept
# Описываем транспорты и и роутеры
begin routers
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT recipients FROM aliases WHERE local_part='${local_part}' AND domain='${domain}'}}
userforward:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT recipients FROM userforward WHERE local_part='${local_part}' AND domain='${domain}'}}
mysqluser:
driver = accept
condition = ${if eq{} {${lookup mysql{SELECT home FROM users WHERE id='${local_part}' AND mbox_host='${domain}' AND \
active='Y'}}}{no}{yes}}
transport = mysql_delivery
begin transports
remote_smtp:
driver = smtp
mysql_delivery:
driver = appendfile
check_string = ""
create_directory
delivery_date_add
directory = ${lookup mysql{SELECT CONCAT(home, "/Maildir") FROM users WHERE id='${local_part}' AND mbox_host='${domain}'}}
directory_mode = 770
envelope_to_add
group = mail
maildir_format
maildir_tag = ,S=$message_size
message_prefix = ""
message_suffix = ""
mode = 0600
quota = ${lookup mysql{SELECT quota FROM users WHERE id='${local_part}' AND mbox_host='${domain}'}{${value}M}}
quota_size_regex = S=(\d+)$
quota_warn_threshold = 95%
return_path_add
address_pipe:
driver = pipe
return_output
address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
address_reply:
driver = autoreply
begin retry
* quota
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
# Включаем аутентификацию
begin authenticators
# Метод - Plain
auth_plain:
driver = plaintext
public_name = PLAIN
server_condition = ${lookup mysql{SELECT id FROM users WHERE id = '${quote_mysql:${local_part:$2}}' AND \
mbox_host = '${quote_mysql:${domain:$2}}' AND passwd = '${quote_mysql:$3}' AND active = 'Y'}{yes}{no}}
server_prompts = :
server_set_id = $2
# Метод - Login
auth_login:
driver = plaintext
public_name = LOGIN
server_condition = ${lookup mysql{SELECT id FROM users WHERE id = '${quote_mysql:${local_part:$1}}' AND \
mbox_host = '${quote_mysql:${domain:$1}}' AND passwd = '${quote_mysql:$2}' AND active = 'Y'}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $1
#Метод - Cram-MD5
auth_cram_md5:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{SELECT passwd FROM users WHERE id = '${quote_mysql:${local_part:$1}}' AND \
mbox_host = '${quote_mysql:${domain:$1}}' AND active = 'Y'}{$value}fail}
server_set_id = $1
FreePascal
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-07 21:06:24
zorg писал(а):всего конфига не видно, но мож у тя правило по авторизации стоит после того как ты разрешил отправлять локалке?? потому они и не авторизуются?
Я так думаю что он не может мой домен определить тк его нет и соответственно
правило с "deny" пропускает а разрешает все локальным по "accept"
Нужно бы еще наверное написать правило запрещающее отправку если
не определен домен ну чтото голова не варит!
FreePascal
-
Alex Keda
- стреляли...
- Сообщения: 35458
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2007-01-07 21:09:17
как-то оно у тя странно - снаружи, своё не принимает, зато принимает всякий бред...
Убей их всех! Бог потом рассортирует...
Alex Keda
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-07 21:20:42
Почему бред?????
Я хочю авторизации от своих пользователей
(без авторизации от моего имени по сети можно кому хочеш отправить, даже Шефу)
Но а если я поставль авторизацию на всех кроме моего домена то как же
я тогда буду получять почту с того же самого мыло.ру, он то не прейдет
ко мне аккаунт регистрировать
FreePascal
-
Alex Keda
- стреляли...
- Сообщения: 35458
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2007-01-07 21:26:23
почему снаружи почту для левых доменов принимает?
Убей их всех! Бог потом рассортирует...
Alex Keda
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-07 22:52:45
Реализовал пока так.
Код: Выделить всё
# Моя локалка
hostlist my_localnet = 192.168.220.0/24
и теперь acl_check_mail выглядит так:
Код: Выделить всё
acl_check_mail:
deny sender_domains = !+local_domains
!authenticated = *
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
deny hosts = my_localnet
!authenticated = *
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
accept
Такая реализация мне не нравится, но пока в голову нехрена не лезит.
Может люди добрые укажут где я тут загоняюсь а Лис соизволит
направить меня на путь истенный, а то я так и не понял о чем он....
FreePascal
-
Alex Keda
- стреляли...
- Сообщения: 35458
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
-
Контактная информация:
Непрочитанное сообщение
Alex Keda » 2007-01-07 23:21:06
сорри - mail from: и rcpt to: спутал
))
Убей их всех! Бог потом рассортирует...
Alex Keda
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-07 23:22:23
Не зря говорил что чтото не нравится, нашел 2 ошибки
было так
Код: Выделить всё
acl_check_mail:
deny sender_domains = !+local_domains
!authenticated = *
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
deny hosts = my_localnet
!authenticated = *
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
accept
Стало так
Код: Выделить всё
acl_check_mail:
deny sender_domains = +local_domains ##########Убрал "!"
!authenticated = *
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
deny hosts = +my_localnet ##########Добавил "+"
!authenticated = *
message = "хГБЕМХРЕ бШ МЕ ЮБРНПХГНБЮМШ. бШ ГЮАШКХ КНЦХМ ХКХ ОЮПНКЭ?"
accept
FreePascal
-
dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
-
Контактная информация:
Непрочитанное сообщение
dikens3 » 2007-01-09 12:48:38
Код: Выделить всё
# Проверка получателей писем
acl_check_rcpt:
# Принимаем почту пришедшую не по TCP/IP, localhost имеется ввиду
accept hosts = :
# Запрещаем письма в локальной части которых содержится @; %; и т.п. для наших доменов
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
# проверяем недопустимые символы для внешних доменов
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
# Запрещаем, если невозможно проверить лок. отправителя.
require verify = sender
# Принимаем, если аутентифицировался, получаетель наш домен, и пользователь существует.
accept authenticated = *
domains = +local_domains
message = "Unknown user"
verify = recipient
# Проверяем, существует ли домен получателя
deny log_message = Recipient verify failed
hosts = +my_lan_hosts
!verify = recipient/callout=20s,defer_ok
# Принимаем, если аутентифицировался и получаетель СУЩЕСТВУЮЩИЙ внешний домен.
accept authenticated = *
domains = !+local_domains
Проверки HELO/EHLO
БЛОКЛИСТЫ и т.п.
Код: Выделить всё
# Проверка получателя в наших доменах
accept domains = +local_domains
endpass
message = "Unknown user"
verify = recipient
# Остальных прибиваем
deny message = relay not permitted
Я так реализовал.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
dikens3
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-09 22:44:53
# Проверка получателя в наших доменах
accept domains = +local_domains
endpass
message = "Unknown user"
verify = recipient
Вот по етим правелам будет разрешено отправка без авторизации
между моими юзерами, а я этого ох как не хочю.
З.Ы. Конечно я могу и ошибатся
я только начал разбератся
а вдруг не прав я, не судите
а на ошибку укажите!!!!!!
FreePascal
-
Kolesnikov
- рядовой
- Сообщения: 42
- Зарегистрирован: 2007-01-09 14:49:39
- Откуда: г.Тайга
Непрочитанное сообщение
Kolesnikov » 2007-01-10 5:27:36
FreePascal писал(а):
# Проверка получателя в наших доменах
accept domains = +local_domains
endpass
message = "Unknown user"
verify = recipient
Вот по етим правелам будет разрешено отправка без авторизации
между моими юзерами, а я этого ох как не хочю.
А если добавить в это правило:
hosts = !+my_lan_hosts
Kolesnikov
-
FreePascal
- сержант
- Сообщения: 245
- Зарегистрирован: 2006-05-14 8:50:05
-
Контактная информация:
Непрочитанное сообщение
FreePascal » 2007-01-10 14:50:20
Да все, всем огромное спасибо!!!!
Проблему я же решил.
Тема закрыта.
FreePascal