Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» FAQ по Exim MTA

Автор: tankistua
Дата сообщения: 21.06.2007 15:53
я думаю это проще будет, чем писать какой-то скрипт... которвый все это запихнет в mysql
Автор: Teo
Дата сообщения: 21.06.2007 15:54
наверное поэтому:

Цитата:
data = ${lookup{$local_part}lsearch{/etc/mail/aliases}}

Автор: fly_house
Дата сообщения: 21.06.2007 16:13
etc/aliases есть симлинк на /etc/mail/aliases
Автор: Teo
Дата сообщения: 21.06.2007 16:17
fly_house
я так сильно подозреваю, что далеко не всегда
Автор: fly_house
Дата сообщения: 21.06.2007 16:36
Teo
я проверил. там вообще изначать стояло на /etc/aliases, а etc/aliases это симлинк на etc/mail/aliases, поэтому я и пробовал изменять на сам файл. ни в том ни в другом случае не работает.
Автор: Teo
Дата сообщения: 21.06.2007 17:28
не знаю, как на экзиме, а в поставке постфикса есть команда newaliases
кроме того, можно попробовать makemap hash
Автор: fly_house
Дата сообщения: 21.06.2007 18:37
Никогда до этого не работал с базами данных, тем более на freebsd, может мне кто-нибудь доходчиво объяснить зачем создается таблица пользователей и алиасов? в сомой таблице хранятся значения, или там просто линки на системных юзеров, и системные алиасы?
Автор: Teo
Дата сообщения: 22.06.2007 09:25

Цитата:
зачем создается таблица пользователей и алиасов?

то есть как зачем?
/etc/aliases - это база данных в двоичном виде типа хэш, то есть key:value
нужен для того, чтобы не заводить фиктивных пользователей типа postmaster, abuse в системе, а также для кучи других полезных целей, например, списков рассылки (maillists)
это нечто вроде прослойки между БД МТА и БД системных пользователей
Автор: fly_house
Дата сообщения: 22.06.2007 11:48

Цитата:
/etc/aliases - это база данных в двоичном виде типа хэш

я не это имел ввиду, а это:

# Таблица alias
CREATE TABLE aliases (
local_part varchar(64) NOT NULL default '',
domain varchar(128) NOT NULL default 'mydomain.ru',
recipients text,
PRIMARY KEY (local_part,domain)
);

# Добавим данные в таблицу aliases
INSERT INTO aliases VALUES ('postmaster', 'mydomain.ru', 'admin');
INSERT INTO aliases VALUES ('mailer-daemon', 'mydomain.ru', 'postmaster');
INSERT INTO aliases VALUES ('root', 'mydomain.ru', 'postmaster');
INSERT INTO aliases VALUES ('bin', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('daemon', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('sync', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('mail', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('pop', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('uucp', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('ftp', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('nobody', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('www', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('named', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('postgres', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('mysql', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('squid', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('operator', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('abuse', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('hostmaster', 'mydomain.ru', 'root');
INSERT INTO aliases VALUES ('webmaster', 'mydomain.ru', 'root');

# Таблица доменов domains
CREATE TABLE domains (
domain varchar(128) NOT NULL default '',
type enum('LOCAL','RELAY','VIRTUAL') default 'LOCAL',
PRIMARY KEY (domain)
);

# Добавим наш домен в таблицу
INSERT INTO domains VALUES ('mydomain.ru', 'LOCAL');

# Таблица userforward
CREATE TABLE userforward (
local_part varchar(64) NOT NULL default '',
domain varchar(128) NOT NULL default '',
recipients text,
PRIMARY KEY (local_part,domain)
);

# Таблица пользователей users,
CREATE TABLE users (
login varchar(64) NOT NULL default '',
name varchar(128) NOT NULL default '',
password varchar(64) NOT NULL default '',
decrypt varchar(64) NOT NULL default '',
uid int(10) unsigned default '1003',
gid int(10) unsigned default '6',
domain varchar(128) NOT NULL default 'mydomain.ru',
quota tinyint(4) default '0',
status enum('0','1') default '1',
PRIMARY KEY (login,domain)
);


отсюда.. http://www.opennet.ru/docs/RUS/exit_setup/exim.html

Добавлено:
вообще если ставить с нуля, систему, какой проверенный вариант step by step посоветуете?
Автор: Teo
Дата сообщения: 22.06.2007 18:35
на http://www.lissyara.su/?id=1200 дофига инфы
я оттуда все брал


Цитата:
я не это имел ввиду, а это:

а какая разница?
ну в постгре таблица
смысл тот же

в баз нужно хранить, если пользователей больше 20-30 и часто добавляются/удаляются
хотя последний критерий не так уж важен...
да и вообще, как кому удобнее
Автор: ALexhha
Дата сообщения: 23.06.2007 16:37

Цитата:
Я так понял что за Sender verify failed в логе отвечают:
!verify = sender/callout=90s,postmaster
или нет?

В данном случае у тебя написано:
Не проверять отправителя методом callout с таймаутом 90s

это откуда вы взяли такую интерпретацию этого условия???
Автор: DarkHost
Дата сообщения: 25.06.2007 09:31
fly_house

Цитата:
вообще если ставить с нуля, систему, какой проверенный вариант step by step посоветуете?

Для вас, при таком подходе: низкоуровневое форматирование с лоботомией.

Teo

Цитата:
в баз нужно хранить, если пользователей больше 20-30 и часто добавляются/удаляются
хотя последний критерий не так уж важен...

Это что, вы хотите сказать, что чтение из базы быстрее, чем с диска? Надеюсь вы шутите?
Автор: fly_house
Дата сообщения: 25.06.2007 17:41
DarkHost


Цитата:
Для вас

премного благодарен за помощь.
Автор: Teo
Дата сообщения: 26.06.2007 10:55
DarkHost
не совсем...
просто в таких конторах често уже есть сервак, а на нём какая-никакая БД
почему бы не заюзать?
а если контора расширится?
к тому же, имхо, SQL лучше и прозрачнее, чем многотонные парсеры текстовых или, не дай бог, бинарных баз (cyrus-sasl, к примеру, без бубна и твердой уверенности, что ты _действительно_ хочешь использовать эти костыли, использовать не рекомендуется)


Цитата:
Это что, вы хотите сказать, что чтение из базы быстрее, чем с диска? Надеюсь вы шутите?

чтение с диска неструктурированных данных?
ясен перец, медленнее, да тока кому они нужны, неструктурированные данные?
ну и масштабы баз тоже, полагаю, имеют какое-то значение
не думаю, что базу в 2000 человек удобно и приятно содержать в текстовом виде

хотя, все это только демагогия
повторяю, мне лично совершенно наплевать, как работает сервер и где лежат юзеры, лишь бы было удобно и безопасно ими управлять
Автор: DarkHost
Дата сообщения: 26.06.2007 11:10
Teo
Вот! Именно целесообразно использовать БД, когда стоит вопрос безопасности(отделении локальных учеток от почтовых, авторизирующихся по открытому ключу) и обработки взаимосвязанных таблиц(статистика, включение-отключение определенных возможностей пользователей). В целом же, чтение с диска осуществляется быстрее, нежели из базы. Исключение составляют случаи частого обращения к базе(файлу), когда какая-либо таблица выгружается в кэш и тогда чтение из кэша уже быстрее, чем с диска.
Автор: fly_house
Дата сообщения: 26.06.2007 13:23
поскольку etc/alias у меня не работает, решил перенаправлять почту через .forward. Вчера в каталоге ~home/admin сделал .forward, в нем написал ua@domain.dp.ua, все перенаправлялось, потом только обновил clamav с 0.88 до 0.90.3, старое перенаправление работает admin > , делаю новые .forward уже не хотят работать. в exim/mainlog пишется:

osonenko@domain.dp.ua R=userforward defer (-1): bad owner for /home/osonenko/.forward

в /home/osonenko/.forward написано ua@domain.dp.ua. что это может быть?

конфиг exim:
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} }

Автор: DarkHost
Дата сообщения: 26.06.2007 13:36
fly_house
Вот поэтому я вам и сказал про лоботомию. Вместо того, чтобы почитать, чем отличаются aliases от forward, вы упорно пытаетесь изобретать велосипед.
Да добавьте вы одну таблицу в базу и измените запрос в роутере.
Автор: fly_house
Дата сообщения: 26.06.2007 13:54
не умею я работать с БД, поэтому и пытаюсь обойтись тем что есть. А выходить из положения как-то надо. Яконечно понимаю что можно взять умную книжку и засеть на пару недель читать про mysql, но ситуация требует чтобы работало уже сейчас.

Добавлено:
я разобрался почему у меня работали alias. в списке доменов у меня был только domain.dp.ua, а почта ломилась на mail.domain.dp.ua (mail - имя хоста). Добавил в конфиг exim domain.dp.ua : mail.domain.dp.ua , заработало.
Автор: tankistua
Дата сообщения: 26.06.2007 14:10
самым первым роутером ставится:


Код: full_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup{$local_part@$domain}lsearch*@{/usr/local/etc/exim/aliases.full}}
file_transport = address_file
pipe_transport = address_pipe
Автор: DarkHost
Дата сообщения: 26.06.2007 14:13
fly_house
Вы можете эти пару недель тыкаться и делать ошибки. Кстати, aliases и forward никакого отношения к MySQL не имеют.
Я могу вам сказать готовое решение, но это вас ничему не научит и завтра вы зададите новый вопрос.
Автор: fly_house
Дата сообщения: 26.06.2007 14:42
DarkHost
вы были рождены гением и у вас не возникает никаких вопросов, и все получается с первого раза?
Автор: tankistua
Дата сообщения: 26.06.2007 14:59
Вы ж задалбываете, а не спрашиваете.
Автор: Teo
Дата сообщения: 27.06.2007 12:41
DarkHost
tankistua
я бы посоветовал обоим поучиться терпимости у иностранцев...
они с первого постав не пишут "обрыдаться"

ни один пока не предложил хотя бы ссылки начинающему человеку почитать
кстати, таких очень мало

толковых - ноль
сам когда-то столкнулся
Автор: fly_house
Дата сообщения: 27.06.2007 13:02
Может многоуважаемые гуру помогут со след вопросом. Например клиент с адресом office@mydomain.dp.ua отправляет письмо на адрес info@anotherdomain.ru, а это письмо падает в ящик info@mydomain.dp.ua. Подозреваю что где-то в проверке адреса надо добавить проверку домена, только вот где? [more]


CONFIG_PREFIX=/usr/local/etc/exim
ACL_PREFIX=CONFIG_PREFIX/acls
CERTDIR=CONFIG_PREFIX/certs

domainlist local_domains = mydomain.dp.ua
domainlist relay_to_domains =
hostlist host_reject = acls/hostreject
hostlist relay_from_hosts = localhost : 192.168.0.0/16


acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_virus
acl_smtp_mime = acl_check_mime


av_scanner = clamd:/var/run/clamav/clamd

spamd_address = 127.0.0.1 783


exim_user = mailnull
exim_group = mail
never_users = root


host_lookup = *

#rfc1413_hosts = *
rfc1413_query_timeout = 0s


ignore_bounce_errors_after = 2d


timeout_frozen_after = 7d

message_size_limit = 10M
accept_8bitmime

tls_certificate = CERTDIR/mailed.crt
tls_privatekey = CERTDIR/mailed.key
tls_advertise_hosts = *
tls_verify_certificates = *

auth_advertise_hosts = ${if eq{$tls_cipher}{}{}{*}}


######################################################################
# ACL CONFIGURATION #
# Specifies access control lists for incoming SMTP mail #
######################################################################

begin acl

acl_check_rcpt:

accept hosts = : 192.168.0.0/16


deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
accept domains = +local_domains


deny message = rejected because \
$sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
!authenticated = *
dnslists = relays.ordb.org : dnsbl.njabl.org : bl.spamcop.net : sbl.spamhaus.org : list.dsbl.org : cbl.abuseat.org



deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

accept local_parts = postmaster
domains = +local_domains


require verify = sender


accept hosts = +relay_from_hosts
control = submission


accept authenticated = *
control = submission


acl_check_mime:
warn decode = default
deny message = Blacklisted file extension detected
condition = ${if match \
{${lc:$mime_filename}} \
{\N(\.wav|\.cpl|\.pif|\.bat|\.scr|\.lnk|\.exe|\.com)$\N} \
{1}{0}}
deny message = Sorry, noone speaks chinese here
condition = ${if eq{$mime_charset}{gb2312}{1}{0}}

accept


accept domains = +local_domains
endpass
verify = recipient


accept domains = +relay_to_domains
endpass
verify = recipient


deny message = relay not permitted



acl_check_virus:

deny message = Message rejected: virus found. Your message was successfully trashed.
hosts = *
malware = *


accept




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
# 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} }



localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user

dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more



begin transports



remote_smtp:
driver = smtp



local_delivery:
driver = appendfile
file = /var/mail/$local_part
delivery_date_add
envelope_to_add
return_path_add
group = mail
user = $local_part
mode = 0660
no_mode_fail_narrower



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
lookup_cram:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup pgsql {select password from accounts where login='$1'}{$value}fail}
server_set_id = $1

login:
driver = plaintext
public_name = LOGIN
server_prompts = Username:: : Password::
server_condition = ${lookup pgsql {select login from accounts where login='$1' and password='$2'}{yes}{no}}
server_set_id = $1
[/more]
Автор: DarkHost
Дата сообщения: 27.06.2007 13:27
Teo
Не стоит советовать, терпите. Я не даю конкретного ответа лишь в случае, если вижу, что человек даже не пытается понять о чем говорит. А пытается переустановить "систему с нуля". Хорошо хоть не порывается низкоуровневое форматирование выполнить.

fly_house
Многоуважаемые гуру говорят вам: "RTFM!!!!!!" Вы попросту не понимаете принципов доставки письма. Чтобы вы потом не плакались, что я вам не помогаю, советую: "Закройте глаза, отделитесь от тела, будьте единым с письмом, представьте, что вы-письмо, ощутите, как вы проходите по ACL, по роутерам, доходите до транспорта... А потом скажите, с какого это перепугу, ваше письмо должно попасть в ящик info@anotherdomain.ru?"
Кстати, сразу расскажите мне, в какой ящик должна падать почта для info@anotherdomain.ru и в какой для info@mydomain.dp.ua. Быть может это натолкнет вас на правильную мысль.
Автор: fly_house
Дата сообщения: 27.06.2007 13:39
#local_part_suffix = +* : -*
вот это надо раскоментить в

localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user

??

Добавлено:
ну насколько я понимаю для info@anotherdomain.ru через
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more

а в info@mydomain.dp.ua через

localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user



Добавлено:

Цитата:
А пытается переустановить "систему с нуля"

оффтоп. система все равно будет ставится с нуля, т.к. старый сервер на линукс генту вместе с сендмылом упал не по детски, восстанавливать его даже не было жалания, поэтому решил сразу поставить Exim на FreeBSD, т.к. фря мне ближе и понятнее. Сейчас поставил просто машину как временное решение, но покупка нового сервака с рейдами и прочим барахлом в процессе, так что туда мне уж точно прийдется ставить все с нуля.
Автор: tankistua
Дата сообщения: 27.06.2007 13:57
http://www.google.com/search?hl=ru&client=opera&rls=ru&hs=myU&q=exim+%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

думаю, стоит в таком случае отложить на некоторое время расборы с экзимом и поучится задавать в поисковике правильно запросы.

И ссылок предостаточное количество, и примеров тоже предостаточно.



Цитата:
localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user

ну и каким боком здесь прицеплен мускуль ?
Автор: DarkHost
Дата сообщения: 27.06.2007 13:57
fly_house
Продолжаю долбать ваш конфиг:

Код: CONFIG_PREFIX=/usr/local/etc/exim
ACL_PREFIX=CONFIG_PREFIX/acls
CERTDIR=CONFIG_PREFIX/certs
Автор: fly_house
Дата сообщения: 27.06.2007 14:06
tankistua

Цитата:
ну и каким боком здесь прицеплен мускуль ?

никаким я не использую его пока.

Добавлено:
поставил dnslookup вперед, вроде уходит на удаленный сервак, а не локального юзера. Где на том же лисяра.ру видел рекомендацию что dnslookup лучше ставить в конец
Автор: DarkHost
Дата сообщения: 27.06.2007 14:26
fly_house
Все работает? Проблем нет, обид нет?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: MS Outlook Возвращает: Не удается доставить.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.