Exim + Courier-IMAP + локальные пользователи
Модератор: xM
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Вобщем еще раз попробовал он у меня собирается без этого скрипта courier-authdaemond.sh, почему такое происходит я не знаю. Но устанавливаю курьер строго по инструкции. Захожу в порты пишу make, дает выбрать опции, затем make install. Потом прописываю все что нужно в rc.conf потом смотрю что там есть в /usr/local/etc/rc.d и нахожу что все *.sh скрипты есть, а courier-authdaemond.sh этого нет. Вот такие вот дела. Ошибиться тут вроде не в чем.
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
lissyara писал(а):Код: Выделить всё
ll /usr/local/etc/rc.d/ | grep auth
Убей их всех! Бог потом рассортирует...
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Не понимаю. Что это ? Команда, но она не выполняется. ll: command not foundlissyara писал(а):lissyara писал(а):Код: Выделить всё
ll /usr/local/etc/rc.d/ | grep auth
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Попробовал эту команду, в ответ как и ожидалось тишина. Нет в каталоге /usr/local/etc/rc.d ничего, что бы начиналось с auth...lissyara писал(а):тогдаКод: Выделить всё
ls /usr/local/etc/rc.d/ | grep auth
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Попробуй руками его поставить:
Код: Выделить всё
cd /usr/ports/security/courier-authlib-base
make && make install && make clean
Убей их всех! Бог потом рассортирует...
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Уф ... запутался... пакеты нашлись, ну думаю надо бы их как-то переустановить, а для начала неплозо бы и удалить их. Удалил пакеты courier-authlib-userdb и courier-authlib-base. Захожу в порт /usr/ports/security/courier-authlib-base/ а там нет ничего кроме директории work и Makefile. Попробовал дать команду make deinstall говорит, что не установлено у вас ничего. Дал make он просто ее проглотил. Ладно выкачал снова эти 2 пакета добавил с помощью команды pkg_add снова создался юзер Courier и все такое. Захожу в порты и вижу те же work и Makefile, информация о пакете отсутствует. Вот чудеса думаю. Пробую обновить порт security но вряд ли, что это даст. Вот запутался и не знаю пока, что делать.
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Вроде как-то поставил. Даже почту смог посмотреть но пишит в логи такое :
Что бы это могло бы быть ?
Код: Выделить всё
Jun 21 13:08:06 gella imapd: Failed to create cache file: maildirwatch (mihail)
Jun 21 13:08:06 gella imapd: Error: Input/output error
Jun 21 13:08:06 gella imapd: Check for proper operation and configuration
Jun 21 13:08:06 gella imapd: of the File Access Monitor daemon (famd).
Jun 21 13:08:06 gella imapd: Failed to create cache file: maildirwatch (mihail)
Jun 21 13:08:06 gella imapd: Error: Input/output error
Jun 21 13:08:06 gella imapd: Check for proper operation and configuration
Jun 21 13:08:06 gella imapd: of the File Access Monitor daemon (famd).
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Послал, получил прочитал. но в логах то же самое. Вот что нашел :
Q: Repeated messages in syslog: "Failed to create cache file: maildirwatch (user) Error: Input/output error Check for proper operation and configuration of the File Access Monitor daemon (famd)." How can I solve it?
This means that Courier was compiled with File Alteration Monitor (FAM), but FAM is not running, or is not configured. If you have FAM installed you can add it to a runlevel and start it. Some FAM configuration use portmapper, so you will need to have portmap running also. You can also see "man 8 imapd" for more information.
Только зачем это нужно не совсем понимаю.
Q: Repeated messages in syslog: "Failed to create cache file: maildirwatch (user) Error: Input/output error Check for proper operation and configuration of the File Access Monitor daemon (famd)." How can I solve it?
This means that Courier was compiled with File Alteration Monitor (FAM), but FAM is not running, or is not configured. If you have FAM installed you can add it to a runlevel and start it. Some FAM configuration use portmapper, so you will need to have portmap running also. You can also see "man 8 imapd" for more information.
Только зачем это нужно не совсем понимаю.
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
В конфиге себе поправил, себя убрал
А она все равно отправляет от любого адреса с любого IP. Что не есть хорошо.
Код: Выделить всё
hostlist relay_from_hosts = localhost:127.0.0.0/8
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
пересобери без ФАМ этого.
Перезапускал, после того как убрал?
конфиг покажи
Перезапускал, после того как убрал?
конфиг покажи
Код: Выделить всё
cat /usr/local/etc/exim/configure | grep -v "^#"
Убей их всех! Бог потом рассортирует...
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Пересобираю щас без FAM'a. А конфиг экзима да вот он :
Код: Выделить всё
#!/bin/sh
# моя конфига экзма. Будь проклят тот день,
# когда мне пришла в голову мысль подписать
# русские поясния ко всем пунктам! :) Хоть и
# делал я это в первую очередь для себя -
# чтоб лучше понять его, но работа эта оказалась
# слишком масштабная и неблагодарная...
# Имя хоста. Используется в EHLO.
# Фигурирует в других пунктах, если они не заданы -
# типа qualify_domain и прочих..
# Если тут ничё не установлено (строка закомметрована)
# то используется то, что вернёт функция uname()
primary_hostname = gella.guit.pfr.ru
# Делаем список локальных доменов. Далее этот
# список будет фигурировать в виде +local_domains
# В данном случае домены выбираются из БД MySQL. Также
# можно их просто перечислить через двоеточие. Есть интересная
# возможность, можно указать юзер@[хост] - lissyara@[222.222.4.5]
domainlist local_domains = @
# делаем список доменов с которых разрешены релеи.
# Далее этот список будет в виде +relay_to_domains
# Можно использовать символы подстановки, типа:
# .... = *.my.domen.su : !spam.my.domen.su : first.su
# тогда пропускается всё, что похоже на *.my.domen.su, но
# от spam.my.domen.su релеится почта не будет.
domainlist relay_to_domains =
# Составляем список хостов с которых разрешён неавторизованый
# релей. Обычно в нём находятся локальные сети, и локалхост...
# ЛокалХост в двух видах был внесён сознательно - пару раз
# сталкивался с кривым файлом /etc/hosts - результатом было
# непонимание `localhost` но пониманием 127.0.0.1/8
hostlist relay_from_hosts = localhost:127.0.0.0/8
# Вводим названия acl`ов для проверки почты. (В общем-то, это
# необязательно, если вы делаете открытый релей, или хотите
# принимать вообще всю почту с любого хоста для любых
# получателей... Тока потом не жалуйтесь что у Вас спам
# и провайдер выкатывает немеряный счёт :))
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
# Прикручиваем антивирус - при условии, что exim собран
# с его поддержкой. В качестве антивиря юзаем ClamAV,
# ибо - ПО должно быть свободным! :)
# Итак, указываем местоположение сокета clamd.
av_scanner = clamd:/var/run/clamav/clamd
# Адрес куда слать на проверку спама (SpamAssasin), но я
# это не юзаю. Не так много у меня спама...
# spamd_address = 127.0.0.1 783
# Имя домена добавляемое для локальных отправителей (реальных
# юзеров системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. Если пункт незадан, то используется
# имя хоста из `primary_hostname`. Логичней было бы написать здесь
# lissyara.su, но мне удобней иначе:
qualify_domain = gella.guit.pfr.ru
# Имя хоста для ситуации, обратной предыдущей, - это имя домена
# добавляемое к почте для системных юзеров, ну и вообще для почты
# пришедшей на адрес типа `root`, `lissyara`, & etc... Если этот
# пункт незадан то используется значение полученное из
# предыдущего пункта - `qualify_domain`
qualify_recipient = gella.guit.pfr.ru
# А это как раз кусок вышеописанного анахронизма - про почту в
# виде user@[222.222.222.222] - принимать её или нет. По дефолту
# (когда строка закомментирована) значение - false. Если захотите
# поставить true то надо будет добавить в список доменов
# комбинацию @[] - она означает `все локальные адреса`
allow_domain_literals = false
# Пользователь от которого работает exim
# На самом деле, с этим пунктом косяк - дефолт - mailnull, но т.к.
# нужно читать файл /etc/passwd - то возможны два варианта - дать
# право на чтение пользователю mailnull, или запускать exim от
# пользователя root. Я выбрал второй вариант - ибо не знаю какой
# лучше. Оба плохие :( Если тока сделать копию файла и на неё дать
# нужные права... Короче - есть простор для экспериментов...
#exim_user = root
exim_user = mailnull
# группа в кторой работает exim
exim_group = mail
# запрещаем работу доставки под юзером root - в целях безопасности
never_users = root
# Проверяем соответствие прямой и обратной зон для всех хостов.
# Тока зачем это нужно - даже и незнаю... Спам на этом не режется...
# Зато возможны проблемы - если сервер зоны скажет `сервер файлед`
# то почту от этого хоста Вы не получите :)
#host_lookup = *
# Тоже анахронизм (на самом деле, не такой уж анахронизм, но все давно
# забили на ident и закрыли файрволлом tcp:113...) Это проверка - Ваш
# хост спрашивает у удалённого, с которого было подключение, а кто
# собстно ко мне подключился на такой-то порт? Если на удалённом хосте
# работает identd - он может ответить (а может и не ответить - как
# настроить), скажет UID пользователя от которого установлено
# соединение, тип ОС, и имя пользователя. Теперь, понимаете, почему
# у всех оно зарублено и файрволлами позакрыто? :) Это же палево :)
# Тока на мой взгляд, если на сервере всё настроено правильно -
# то вовсе это и не страшно.
# Короче - если хостс поставить * то будет проверять все. Таймаут -
# если поставить 0 то не будет ждать ответа ни от кого. По
# вышеописанным причинам - отключаем
#rfc1413_hosts = *
rfc1413_query_timeout = 0s
# По дефолту, экзим отфутболивает все `неквалифицированные` адреса,
# состоящие тока из локальной части. Для того чтобы разрешить такие письма
# определённых хостов используются эти директивы:
# для `неквалифицированных` отправителей
sender_unqualified_hosts = +relay_from_hosts
# для `неквалифицированных` получателей
recipient_unqualified_hosts = +relay_from_hosts
# Интересный пункт, тока я не вполне понимаю его логику.
# Позволяет выполнять что-то типа - пришло сообщение на
# локальный ящик user%test.su@lissyara.su и
# перечисленного списка доменов (* - все):
# percent_hack_domains = *
# Если сообщение было недоставлено, то генерится соощение
# об ошибке. Если сообщение об ошибке не удалось доставить
# то оно замораживается на указанный в этом пункте срок,
# после чего снова попытка доставить его. При очередной
# неудаче - сообщение удаляется.
ignore_bounce_errors_after = 45m
# Замороженные сообщения, находящиеся в очереди, дольше
# указанного времени удаляются и генерится сообщение
# об ошибке (при условии, что это не было недоставленное
# сообщение об ошибке :))
timeout_frozen_after = 15d
# собсно на этом штатный конфиг кончился, но
# меня-то это не устраивает... Поэтому пошли пункты,
# почёрпнутые из других источников.
# список адресов, через запятую, на которые засылаются
# сообщения о замороженных сообщениях (о замороженых
# уведомлениях о заморозке, сообщения не генерятся. - я
# надеюсь эта строка понятна :))
#freeze_tell = admin@lissyara.su
# Список хостов, почта от которых принимается, несмотря
# на ошибки в HELO/EHLO (тут указана моя подсеть)
helo_accept_junk_hosts = 10.100.11.0/24
# Через какое время повторять попытку доставки
# замороженного сообщения
auto_thaw = 1h
# Приветствие сервера
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
# Максимальное число одновременных подключений по
# SMTP. Рассчитывать надо исходя из нагрузки на сервер
smtp_accept_max = 50
# максимальное число сообщений принимаемое за одно соединение
# от удалённого сервера (или пользователя). C числом 25
# я имел проблемы тока один раз - когда у меня три дня лежал
# инет и после его подъёма попёрли мессаги. Но у меня не так
# много почты - всего 30 пользователей.
smtp_accept_max_per_connection = 25
# чё-то про логи и борьбу с флудом - я так понимаю -
# максимальное число сообщений записываемых в логи
smtp_connect_backlog = 30
# максимальное число коннектов с одного хоста
smtp_accept_max_per_host = 20
# Ход ладьёй - для увеличения производительности,
# директория `spool` внутри, разбивается на
# директории - это ускоряет обработку
split_spool_directory = true
# Если у сообщения много адресатов на удалённых хостах,
# то запускатеся до указанного числа максимально число
# параллельных процессов доставки
remote_max_parallel = 15
# при генерации сообщения об ошибке прикладывать
# не всё сообщение, а кусок (от начала) указанного
# размера (иногда полезно и целиком - в таком случае
# просто закомментируйте эту строку)
return_size_limit = 70k
# размер сообщения. У меня стоит относительно большой
# размер (`относительно` - потому, что на большинстве
# хостов оно ограничено 2-5-10мб, либо стоит анлим.)
message_size_limit = 64M
# разрешаем неположенные символы в HELO (столкнулся
# с этим случайно - имя фирмы состояло из двух слов
# и какой-то раздолбай домен обозвал my_firme_name
# прям с подчёркиваниями... Виндовые клиенты при
# соединении радостно рапортовали о себе
# `vasya.my_firme_name` ну а экзим их футболил :))
helo_allow_chars = _
# Принудительная синхронизация. Если отправитель
# торопится подавать команды, не дождавшись ответа,
# то он посылается далеко и надолго :) Немного,
# спам режется.
smtp_enforce_sync = true
# Выбираем, что мы будем логировать
# + - писать в логи,
# - - Не писать в логи.
# +all_parents - все входящие?
# +connection_reject - разорваные соединения
# +incoming_interface - интерфейс (реально - IP)
# +lost_incoming_connections - потеряные входящие
# соединения
# +received_sender - отправитель
# +received_recipients - получатель
# +smtp_confirmation - подтверждения SMTP?
# +smtp_syntax_error - ошибки синтаксиса SMTP
# +smtp_protocol_error - ошибки протокола SMTP
# -queue_run - работа очереди (замороженные мессаги)
log_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run
### конфигурация ACL для входящей почты
begin acl
# Эти правила срабатывают для каждого получателя
acl_check_rcpt:
# принимать сообщения которые пришли с локалхоста,
# не по TCP/IP
accept hosts = :
# Запрещаем письма содержащие в локальной части
# символы @; %; !; /; |. Учтите, если у вас было
# `percent_hack_domains` то % надо убрать.
# Проверяются локальные домены
deny message = "incorrect symbol in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
# Проверяем недопустимые символы для
# нелокальных получателей:
deny message = "incorrect symbol in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
# Принимаем почту для постмастеров локальных доменов без
# проверки отправителя (я закомментировал, т.к. это -
# основной источник спама с мой ящик).
accept local_parts = postmaster
domains = +local_domains
# Запрещщаем, если невозможно проверить отправителя
# (отсутствует в списке локальных пользователей)
# У себя я это закоментил, по причине, что некоторые
# железяки (принтеры, & etc) и программы (Касперский, DrWEB)
# умеют слать почту, в случае проблем но не умеют ставить
# нужного отправителя. Такие письма эта проверка не пускает.
# require verify = sender
# Запрещщаем тех, кто не обменивается приветственными
# сообщениями (HELO/EHLO)
deny message = "HELO/EHLO require by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
# Принимаем сообщения от тех, кто аутентифицировался:
# Вообще, большинство конфигов в рунете - это один и тот же
# конфиг написанный Ginger, в котором этот пункт расположен
# внизу. Но при таком расположении рубятся клиенты с adsl,
# ppp, и прочие зарезанные на последующих проверках. Но это
# жа неправильно! Этом мои пользователи из дома! Потому
# я это правило расположил до проверок.
accept authenticated = *
# Рубаем нах, тех, кто подставляет свой IP в HELO
deny message = "Your IP in HELO - access denied!"
hosts = * : !+relay_from_hosts : !gella.guit.pfr.ru
condition = ${if eq{$sender_helo_name}\
{$sender_host_address}{true}{false}}
# Рубаем тех, кто в HELO пихает мой IP (2500 мудаков за месяц!)
deny condition = ${if eq{$sender_helo_name}\
{$interface_address}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "main IP in your HELO! Access denied!"
# Рубаем тех, кто в HELO пихает только цифры
# (не бывает хостов ТОЛЬКО из цифр)
deny condition = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "can not be only number in HELO!"
# Рубаем тех, кто не пишет отправителя
# deny condition = ${if eq{$sender_address}{}{yes}{no}}
# hosts = !127.0.0.1 : !localhost : *
# message = "А какого HELO пустое?! Не по RFC..."
## Рубаем тех, кто не пишет отправителя (пробел)
# deny condition = ${if match{$sender_address}{\N^\s+$\N}{yes}{no}}
# hosts = !127.0.0.1 : !localhost : *
# message = "А какого HELO пустое (тока пробелы)?! Не по RFC..."
# Рубаем тех, кто не пишет отправителя
# deny condition = ${if eq{$sender_address}{}{yes}{no}}
# hosts = !127.0.0.1 : !localhost : *
# message = "Where sender of this mail?!"
# Рубаем хосты типа *adsl*; *dialup*; *pool*;....
# Нормальные люди с таких не пишут. Если будут
# проблемы - уберёте проблемный пункт (у меня клиенты
# имеют запись типа asdl-1233.zone.su - я ADSL убрал...)
deny message = "your hostname is bad (adsl, poll, ppp & etc)."
condition = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}
# Задержка. (это такой метод борьбы со спамом,
# основанный на принципе его рассылки) На этом рубается
# почти весь спам. Единственно - метод неприменим на
# реально загруженных MTA - т.к. в результате ему
# приходится держать много открытых соединений.
# но на офисе в сотню-две человек - шикарный метод.
#
# более сложный вариант, смотрите в статье по exim и
# курьер имап. Т.к. там метод боле умный (просто правил
# больше :), то можно и на более загруженные сервера ставить)
warn
# ставим дефолтовую задержку в 20 секунд
set acl_m0 = 30s
warn
# ставим задержку в 0 секунд своим хостам и
# дружественным сетям (соседняя контора :))
hosts = +relay_from_hosts:213.234.195.224/28:80.253.9.18/32
set acl_m0 = 0s
warn
# пишем в логи задержку (если оно вам надо)
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
delay = $acl_m0
# Проверка получателя в локальных доменах.
# Если не проходит, то проверяется следующий ACL,
# и если непрошёл и там - deny
accept domains = +local_domains
endpass
message = "In my mailserver not stored this user"
verify = recipient
# Проверяем получателя в релейных доменах
# Опять-таки если не проходит -> следующий ACL,
# и если непрошёл и там - deny
accept domains = +relay_to_domains
endpass
message = "main server not know how relay to this address"
verify = recipient
# Рубаем тех, кто в блэк-листах. Серваки перебираются
# сверху вниз, если не хост не найден на первом, то
# запрашивается второй, и т.д. Если не найден ни в одном
# из списка - то почта пропускается.
deny message = "you in blacklist - $dnslist_domain --> $dnslist_text"
dnslists = relays.ordb.org : \
opm.blitzed.org : \
cbl.abuseat.org : \
bl.csma.biz : \
dynablock.njabl.org : \
relays.ordb.org
# Разрешаем почту от доменов в списке relay_from_hosts
accept hosts = +relay_from_hosts
# Если неподошло ни одно правило - чувак явно ищет
# открытый релей. Пшёл прочь. :)
deny message = "Homo hominus lupus est"
# Тут идут ACL проверяющие содержимое (тело) письма.
# Без них будут пропускаться все сообщения.
acl_check_data:
# Рубаем письма с китайскими сиволами
deny message = "this is spam - denied"
condition = ${if match{$message_body} \
{105[-_]*51[-_]*86|778[-_]*98[-_]*94} \
{yes}{no}}
# Проверяем письмо на вирусы
deny malware = *
message = "In e-mail found VIRUS - $malware_name"
# Если есть необходимость - тут проверки на спам
# Пропускаем остальное
accept
# чё делаем с почтой
begin routers
# Поиск маршрута к хосту в DNS. Если маршрут не найден в DNS -
# то это `унроутабле аддресс`. Не проверяются локальные
# домены, 0.0.0.0 и 127.0.0.0/8
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
# В качестве файла альясов используется стандартный файл альясов.
# Ребилдить БД командой newaliases не надо - т.к. в данном случае
# используется не БД а именно текстовый файл.
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part}lsearch{/etc/aliases}}
user = mailnull
group = mail
file_transport = address_file
pipe_transport = address_pipe
# Это специфический транспорт для адресов сгенерённых форвардингом для
# доставки в файл, pipe или для авто-ответов... Используется файло в
# хомяке, для перенаправления почты...
userforward:
driver = redirect
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
file = $home/.forward
# allow_filter
no_verify
no_expn
check_ancestor
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
condition = ${if exists{$home/.forward} {yes} {no} }
# Этот роутер проверяет локальный юзер или нет. Если в нём будет
# ошибка (юзер не найден) то он выдаст мессагу "Unknown user".
localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user
# начинаются транспорты - как доставляем почту
begin transports
# Доставка на удалённые хосты - по SMTP
remote_smtp:
driver = smtp
# Транспорт для доставки почты локальным адресатам. Ввиду отсутствия в файле
# /etc/passwd поля для указания пути к почте, используется хомяк.
local_delivery:
driver = appendfile
check_string = ""
create_directory
delivery_date_add
directory = /usr/home/${local_part}/Maildir
# directory = /var/mail/${local_part}
directory_mode = 770
envelope_to_add
group = mail
maildir_format
maildir_tag = ,S=$message_size
message_prefix = ""
message_suffix = ""
mode = 0660
# Это транспорт для доставки через трубу по адресам сгенерённым
# форвардингом или альясингом. Если эта pipe генерит стандартный вывод,
# возвращается отправителью с руганью в виде этого вывода. Установив
# return_fail_output вместо return_output можно добиться чтобы отлупы
# шли тока в случае ошибок, а не просто ругани.
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
# Этот кусок я не трогал. Думаю разработчики лучше знают,
# какие тут должны быть цифирьки. Если же вы это знаете
# лучше их - меняйте. Хотя... А какого, если Вы такой
# умный, читаете этот мануал? Может ну, их, цифирьки, а? :)
# Address or Domain Error Retries
# ----------------- ----- -------
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
# преобразование адресов. У меня такого нету.
begin rewrite
# Секция авторизации при отправке писем. Ввиду того,
# что почтовых клиентов много, и все всё делают
# по-своему, то и механизмов авторизации три...
begin authenticators
# следующие два пункта выдернуты из рассылки экзима,
# на его родном сайте - www.exim.org, пробовал только оутглюком,
# потому за всё не ручаюсь :)
plain:
driver = plaintext
public_name = PLAIN
server_condition = "${if and {{!eq{$2}{}}{!eq{$3}{}} \
{crypteq{$3}{${extract{1}{:} \
{${lookup{$2}lsearch{/etc/mailpasswd}{$value}{*:*}}}}}}}{1}{0}}"
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${if and {{!eq{$1}{}}{!eq{$2}{}} \
{crypteq{$2}{${extract{1}{:} \
{${lookup{$1}lsearch{/etc/mailpasswd}{$value}{*:*}}}}}}}{1}{0}}"
server_set_id = $1
# летучей мыши нет, для её аутентификации надо тут писать кондишен,
# но чё-то меня сёдня ломает :)) Выглядеть это будет примерно так:
#cram_md5:
# driver = cram_md5
# public_name = CRAM-MD5
# server_secret = "тут кондишен :) будет время и необходимость - нарисую
# захотите сами - возьмите за образец из любой другой
# статьи сайта, где для MySQL - и вперёд..."
# server_set_id = $1
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
как ты думаешь, зачем я дал этот кусок кода?lissyara писал(а):пересобери без ФАМ этого.
Перезапускал, после того как убрал?
конфиг покажиКод: Выделить всё
cat /usr/local/etc/exim/configure | grep -v "^#"
Убей их всех! Бог потом рассортирует...
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Код: Выделить всё
primary_hostname = gella.guit.pfr.ru
domainlist local_domains = @
domainlist relay_to_domains =
hostlist relay_from_hosts = localhost:127.0.0.0/8
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
av_scanner = clamd:/var/run/clamav/clamd
qualify_domain = gella.guit.pfr.ru
qualify_recipient = gella.guit.pfr.ru
allow_domain_literals = false
exim_user = mailnull
exim_group = mail
never_users = root
rfc1413_query_timeout = 0s
sender_unqualified_hosts = +relay_from_hosts
recipient_unqualified_hosts = +relay_from_hosts
ignore_bounce_errors_after = 45m
timeout_frozen_after = 15d
helo_accept_junk_hosts = 10.100.11.0/24
auto_thaw = 1h
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
smtp_accept_max = 50
smtp_accept_max_per_connection = 25
smtp_connect_backlog = 30
smtp_accept_max_per_host = 20
split_spool_directory = true
remote_max_parallel = 15
return_size_limit = 70k
message_size_limit = 64M
helo_allow_chars = _
smtp_enforce_sync = true
log_selector = \
+all_parents \
+connection_reject \
+incoming_interface \
+lost_incoming_connection \
+received_sender \
+received_recipients \
+smtp_confirmation \
+smtp_syntax_error \
+smtp_protocol_error \
-queue_run
begin acl
acl_check_rcpt:
accept hosts = :
deny message = "incorrect symbol in address"
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
deny message = "incorrect symbol in address"
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
accept local_parts = postmaster
domains = +local_domains
deny message = "HELO/EHLO require by SMTP RFC"
condition = ${if eq{$sender_helo_name}{}{yes}{no}}
accept authenticated = *
deny message = "Your IP in HELO - access denied!"
hosts = * : !+relay_from_hosts : !gella.guit.pfr.ru
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 = "main IP in your HELO! Access denied!"
deny condition = ${if match{$sender_helo_name}\
{\N^\d+$\N}{yes}{no}}
hosts = !127.0.0.1 : !localhost : *
message = "can not be only number in HELO!"
deny message = "your hostname is bad (adsl, poll, ppp & etc)."
condition = ${if match{$sender_host_name} \
{adsl|dialup|pool|peer|dhcp} \
{yes}{no}}
warn
set acl_m0 = 30s
warn
hosts = +relay_from_hosts:213.234.195.224/28:80.253.9.18/32
set acl_m0 = 0s
warn
logwrite = Delay $acl_m0 for $sender_host_name \
[$sender_host_address] with HELO=$sender_helo_name. Mail \
from $sender_address to $local_part@$domain.
delay = $acl_m0
accept domains = +local_domains
endpass
message = "In my mailserver not stored this user"
verify = recipient
accept domains = +relay_to_domains
endpass
message = "main server not know how relay to this address"
verify = recipient
deny message = "you in blacklist - $dnslist_domain --> $dnslist_text"
dnslists = relays.ordb.org : \
opm.blitzed.org : \
cbl.abuseat.org : \
bl.csma.biz : \
dynablock.njabl.org : \
relays.ordb.org
accept hosts = +relay_from_hosts
deny message = "Homo hominus lupus est"
acl_check_data:
deny message = "this is spam - denied"
condition = ${if match{$message_body} \
{105[-_]*51[-_]*86|778[-_]*98[-_]*94} \
{yes}{no}}
deny malware = *
message = "In e-mail found VIRUS - $malware_name"
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{$local_part}lsearch{/etc/aliases}}
user = mailnull
group = mail
file_transport = address_file
pipe_transport = address_pipe
userforward:
driver = redirect
check_local_user
file = $home/.forward
no_verify
no_expn
check_ancestor
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
condition = ${if exists{$home/.forward} {yes} {no} }
localuser:
driver = accept
check_local_user
transport = local_delivery
cannot_route_message = Unknown user
begin transports
remote_smtp:
driver = smtp
local_delivery:
driver = appendfile
check_string = ""
create_directory
delivery_date_add
directory = /usr/home/${local_part}/Maildir
directory_mode = 770
envelope_to_add
group = mail
maildir_format
maildir_tag = ,S=$message_size
message_prefix = ""
message_suffix = ""
mode = 0660
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
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticators
plain:
driver = plaintext
public_name = PLAIN
server_condition = "${if and {{!eq{$2}{}}{!eq{$3}{}} \
{crypteq{$3}{${extract{1}{:} \
{${lookup{$2}lsearch{/etc/mailpasswd}{$value}{*:*}}}}}}}{1}{0}}"
server_set_id = $2
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${if and {{!eq{$1}{}}{!eq{$2}{}} \
{crypteq{$2}{${extract{1}{:} \
{${lookup{$1}lsearch{/etc/mailpasswd}{$value}{*:*}}}}}}}{1}{0}}"
server_set_id = $1
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
-
- мл. сержант
- Сообщения: 90
- Зарегистрирован: 2006-06-15 17:36:48
Да именно так и происходит, что локальным пользователям с любого адреса. А этого не хотелось бы. Хотелось бы чтобы могли отпралять только те кто прописан в mailpasswd. И чтобы отправлялось и на яндекс и на любой другой почтовик. Что для этого нужно сделать. Иначе говоря чтобы любой пользователь проходил аутенфикация, и если ты есть то милости просим авторизуйся и отправляй, а если тебя нет в списке локальных пользователей, то иди дальше...) Типа извини но ты не являешься пользователем данной системы, посему и воспользоваться ее услугами не можешь ... ) Ну и хочется конечно чтобы я например как пользователь мог отправлять письма и на любую другую почту )
- Alex Keda
- стреляли...
- Сообщения: 35427
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация: