Здравстуйте, как говориться мое почтение! Вопросик образовался, по теме почтового сервера нужно установить и настроить нормально. Скажите пожалуйста возможно ли наладить работу почтового сервера exim если доменного имени пока нет, если да то как это лучше сделать. И еще такой момент, может кто сталкивался как сделать так что бы можно было контролировать (просматривать) всю отправляемую почту, служащими организации в целях безопасности. Может кто знает толковую статью по этой теме, буду очень признателен.
насчет домена - можно использовать внутренний домен без выхода в интернет, но стоимость домена в наши дни не такая уж и заоблочная
по поводу копирования почты - можно реализовать, почта будет сыпаться на отдельный ящик, минус этого отслеживание уже отправленной почты.
Я делал так же, как говорит Vicpo - просто настраивается на внутренний домен, на тот, который будете приобретать. На шлюзе потом натишь внутрь. По поводу контроля - вся почта должна копироваться на другой ящик, это самый простой вариант. Правда где-то давно попадался скриптик, через который который прозрачно проксировались 25/110 порты - достоинство в том, что можно перехватывать почту идущую на сторонние сервера, но это уже паранойя, имхо.
И действительно, стоимость домена в .kz - около 3000 в год. Копейки.
[quote name=\'Vicpo\']минус этого отслеживание уже отправленной почты.[/quote]
Поясни, что-то не понимаю...
Цитироватьминус этого отслеживание уже отправленной почты
Я тоже не совсем уловил мысль, т.е почта копируется на указанный ящик и отправляется адресату не дожидаясь его прочтения. Я так понял.
Подскажите пожалуйста какой почтовый сервер на ваш взгляд сейчас наиболее актуален, а то их так много:
* Sendmail
* Postfix
* Exim
* Qmail
я тут почитал одну статейку где предпочтение отдают Exim и Postfix, Sendmail на третьем тесте. Хотя Postfix превосходит Exim по управлению, безопасности и функционалу. Хотелось бы узнать ваше мнение, что посоветуете на чем все таки лучше сделать свой выбор, с учетом того что я работаю в основном на Linux Mandriva.
Exim или Postfix
На счет безопасности можно поспорить, потому как за все существование Exim не было найдено ни одной серьезной уязвимости.
Про копирование почты: юзер отправил почту - почта отправляется получателю и копируется на проверочный ящик - потом СБ получает это письмо на свой почтовый клиент и читает, даже если что то там и было противоправное СБ встает перед фактом и идет на разборки. Вот собственно.
На мандриве дефолтом стоит постфикс, так что особо не парься а настраивай его (в Debian по дефолту Exim4 к примеру)
Спасибо за разъяснения, но я наверное с начало разберусь с доменом и DNS сервером, а уж потом примусь за настройку почтовика. А то, я так понял каша может получиться!

/biggrin.gif\' class=\'bbc_emoticon\' alt=\':D\' />
Да и еще подскажите, вот к примеру для удобной работы php и mysql есть phpmyadmin, а у постфикс что нибудь есть, какая нибудь оболочка для удобной работы или все только через конфиги. Заранее благодарю.
postfixadmin
Здравствуйте! установил exim на /etc/exim отправляю текст с user1@mail.server к user2@mail.server все отлично, но при вводе #mail -u user2 говорит что писем нет, оказалось что все сохраняется в /var/spool/exim/ (его содержимое #ls -F => db/ input/ msglog/) а при вводе #mailq -v => /var/spool/mqueue is empty
что нужно сделать чтоб почтальон кидал в /var/spool/mqueue?
нашел, надо было просто в главном конфиге поставить file = /var/mail/$local_part. извиняюсь за засорение эфира!

/rolleyes.gif\' class=\'bbc_emoticon\' alt=\':rolleyes:\' />
Здравствуйте. на серваке ставил конфигу с аутентификацией
[codebox]# AUTH PLAIN authentication meth0d used by Netscape Messenger.
#
plain:
driver = plaintext
public_name = PLAIN
server_condition = "${if and {{!eq{$2}{}}{!eq{$3}{}} \
{crypteq{$3}{${extract{l}{:} \
{${lookup{$2}lsearch{/etc/exim/exim.auth} \
{$value }{*:*}}}}}}}{ 1} (0}}"
# AUTH LOGIN authentication meth0d used by Outlook Express.
#
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${if and {{!eq{$l}{}}{!eq{$2}{}} \
{crypteq{$2} ${extract{l}(:} \
{$ { lookup ( $1 } lsearch{ /etc/exim/exim.auth} \
{$value}{*:*}}}}}}}{l}{0}}"
[/codebox]
и получилось так что проверка почты требует авторизации а отправка нет, хотя в источнике писалось что все будет работать симметрично. что я сделал не так?
Весь конфиг покажите, из этого куска можно понять только типы авторизации
[codebox]######################################################################
# MAIN CONFIGURATION SETTINGS #
######################################################################
primary_hostname = mail.aes.kz
domainlist local_domains = @ : lsearch;/etc/exim4/localdomains
domainlist relay_to_domains =
hostlist relay_from_hosts = lsearch;/etc/exim4/relaydomains
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
# av_scanner = clamd:/tmp/clamd
# spamd_address = 127.0.0.1 783
# tls_advertise_hosts = *
# tls_certificate = /etc/ssl/exim.crt
# tls_privatekey = /etc/ssl/exim.pem
# daemon_smtp_ports = 25 : 465 : 587
# tls_on_connect_ports = 465
# qualify_domain =
# qualify_recipient =
# allow_domain_literals
never_users = root
host_lookup = *
rfc1413_hosts = *
rfc1413_query_timeout = 5s
# percent_hack_domains =
ignore_bounce_errors_after = 2d
timeout_frozen_after = 7d
spool_directory=/var/spool/exim4
smtp_banner = "Welcome on our mail server!\n\
This system does not accept Unsolicited \
Commercial Email\nand will blacklist \
offenders via our spam processor.\nHave a \
nice day!\n\n${primary_hostname} ESMTP Exim \
${version_number} ${tod_full}"
######################################################################
# ACL CONFIGURATION #
# Specifies access control lists for incoming SMTP mail #
######################################################################
begin acl
acl_check_rcpt:
deny local_parts = ^.*[@%!/|]
deny senders = *@dbm;/etc/exim4/access.db : \
dbm;/etc/exim4/access.db
require verify = sender
deny message = unrouteable address
hosts = !127.0.0.1/8:0.0.0.0/0
!verify = recipient
accept domains = +local_domains
endpass
message = unknown user
verify = recipient
accept hosts = +relay_hosts
accept hosts = +auth_relay_hosts
endpass
message = authentication required
authenticated = *
deny message = relay not permitted
acl_check_data:
accept
######################################################################
# ROUTERS CONFIGURATION #
# Specifies how addresses are handled #
######################################################################
# THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT! #
# An address is passed to each router in turn until it is accepted. #
######################################################################
begin routers
# domain_literal:
# driver = ipliteral
# domains = ! +local_domains
# transport = remote_smtp
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/exim4/aliases}}
# user = exim
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
localuser:
driver = accept
check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
transport = local_delivery
cannot_route_message = Unknown user
######################################################################
# TRANSPORTS CONFIGURATION #
######################################################################
# ORDER DOES NOT MATTER #
# Only one appropriate transport is called for each delivery. #
######################################################################
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
# 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
######################################################################
# RETRY CONFIGURATION #
######################################################################
begin retry
# Address or Domain Error Retries
# ----------------- ----- -------
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
######################################################################
# REWRITE CONFIGURATION #
######################################################################
begin rewrite
######################################################################
# AUTHENTICATION CONFIGURATION #
######################################################################
begin authenticators
#PLAIN:
# driver = plaintext
# server_set_id = $auth2
# server_prompts = :
# server_condition = Authentication is not yet configured
# server_advertise_condition = ${if def:tls_cipher }
# LOGIN authentication has traditional prompts and responses. There is no
# authorization ID in this mechanism, so unlike PLAIN the username and
# password are $auth1 and $auth2. Apart from that you can use the same
# server_condition setting for both authenticators.
#LOGIN:
# driver = plaintext
# server_set_id = $auth1
# server_prompts = <| Username: | Password:
# server_condition = Authentication is not yet configured
# server_advertise_condition = ${if def:tls_cipher }
# AUTH PLAIN authentication meth0d used by Netscape Messenger.
#
plain:
driver = plaintext
public_name = PLAIN
server_condition = "${if and {{!eq{$2}{}}{!eq{$3}{}} \
{crypteq{$3}{${extract{l}{:} \
{${lookup{$2}lsearch{/etc/exim4/exim.auth} \
{$value }{*:*}}}}}}}{ 1} (0}}"
# AUTH LOGIN authentication meth0d used by Outlook Express.
login:
driver = plaintext
public_name = LOGIN
server_prompts = "Username:: : Password::"
server_condition = "${if and {{!eq{$l}{}}{!eq{$2}{}} \
{crypteq{$2} ${extract{l}(:} \
{$ { lookup ( $1 } lsearch{ /etc/exim4/exim.auth} \
{$value}{*:*}}}}}}}{l}{0}}"
######################################################################
# CONFIGURATION FOR local_scan() #
######################################################################
# If you have built Exim to include a local_scan() function that contains
# tables for private options, you can define those options here. Remember to
# uncomment the "begin" line. It is commented by default because it provokes
# an error with Exim binaries that are not built with LOCAL_SCAN_HAS_OPTIONS
# set in the Local/Makefile.
# begin local_scan
# End of Exim configuration file
[/codebox]
А по какой доке настраивали? Я с таким способом не сталкивался, настраивал связку Exim4 + Dovecot + MySQl
И вы не используете всех возможностей exim, согласно конфигу.
То есть нет проверок и прочих наворотов.
у меня qpopper+exim4
если можете скиньте свои конфиги
Немного модифицировал этот конфиг (//\"http://forum.ru-board.com/topic.cgi?forum=8&topic=4514&start=86&limit=1#1\")
вообщем нашел ссылку:
http://www.lissyara.su/?id=1200 (//\"http://www.lissyara.su/?id=1200\")
вдруг кому понадобится.
пока что читаю и наверно сделаю с SQL
Не все так гладко как там написано

/smile.gif\' class=\'bbc_emoticon\' alt=\':)\' />
Ну будут вопросы задавайте.
Цитата: kima от 15 Июля 2009, 14:54Здравствуйте. на серваке ставил конфигу с аутентификацией
[codebox]# AUTH PLAIN authentication meth0d used by Netscape Messenger. # plain: driver = plaintext public_name = PLAIN server_condition = "${if and {{!eq{$2}{}}{!eq{$3}{}} \ {crypteq{$3}{${extract{l}{:} \ {${lookup{$2}lsearch{/etc/exim/exim.auth} \ {$value }{*:*}}}}}}}{ 1} (0}}" # AUTH LOGIN authentication meth0d used by Outlook Express. # login: driver = plaintext public_name = LOGIN server_prompts = "Username:: : Password::" server_condition = "${if and {{!eq{$l}{}}{!eq{$2}{}} \ {crypteq{$2} ${extract{l}(:} \ {$ { lookup ( $1 } lsearch{ /etc/exim/exim.auth} \ {$value}{*:*}}}}}}}{l}{0}}" [/codebox]
и получилось так что проверка почты требует авторизации а отправка нет, хотя в источнике писалось что все будет работать симметрично. что я сделал не так?
У меня такая-же проблема, только настраивал по данной доке: http://agapoff.name/exim-dovecot.html но пока без clamav.
Пытаюсь понять релеи и почему не идет аворизации с нелокальных адресов. Перешел с postfix'a пока не могу въехать, помогите разобраться.
Цитата: Halfi от 19 Апреля 2010, 20:08У меня такая-же проблема, только настраивал по данной доке: http://agapoff.name/exim-dovecot.html (http://agapoff.name/exim-dovecot.html) но пока без clamav.
Пытаюсь понять релеи и почему не идет аворизации с нелокальных адресов. Перешел с postfix'a пока не могу въехать, помогите разобраться.
Конфиг покажите.
Цитата: Vicpo от 20 Апреля 2010, 09:16Конфиг покажите.
Конфиг как в мануале, мальца поправил, чтобы почта ходила за пределы локальных доменов.
# Имя хоста. Используется в EHLO.
# Фигурирует в других пунктах, если они не заданы
# По умолчанию используется то, что вернёт функция uname()
primary_hostname = somedomen.ru
# Данные для подключения к базе данных
# hide в начале означает, то нерутовые пользователи командой exim -bV не увидят
# этих значений
hide mysql_servers = localhost/mail/postmaster/pass
# Задаём список локальных доменов. В данном случае спрашиваем у MySQL
DOMAIN_QUERY = SELECT domain FROM domain WHERE \
domain='${domain}' AND active='1'
domainlist local_domains = ${lookup mysql{DOMAIN_QUERY}}
# Таким же образом задаём список доменов, с которых разрешён релей.
domainlist relay_to_domains = ${lookup mysql{DOMAIN_QUERY}}
# Список хостов, с которых разрешён релей без авторизации.
hostlist relay_from_hosts = localhost:127.0.0.1/8
# Списки ACL для проверки почты
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_helo = acl_check_helo
# Здесь указываем сокет внешнего антивируса ClamAV. Пока что оставим закомменченным
# Включим его позже
#av_scanner = clamd:/var/run/clamav/clamd.ctl
# Здесь укажем TCP/IP сокет для SpamAssassin
spamd_address = 127.0.0.1 783
# Порт, на котором SMTP демон будет слушать входящие подключения
daemon_smtp_ports = 25 : 465
# Имя домена добавляемое для локальных отправителей (реальных
# юзеров системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. Если пункт незадан, то используется
# имя хоста из primary_hostname.
qualify_domain = somedomen.ru
# Имя домена добавляемое для локальных получателей
qualify_recipient = somedomen.ru
# запрещаем работу доставки под юзером root - в целях безопасности
never_users = root
# Проверяем соответствие прямой и обратной зон для всех хостов.
# При необходимости лучше раскомментировать это позже
host_lookup = *
# Здесь можно включить запросы ident на входящие SMTP запросы.
# Вещь ненужная и неактуальная. Отключаем
#rfc1413_hosts = *
rfc1413_query_timeout = 0s
# Период повторных попыток доставки сообщений об ошибке
ignore_bounce_errors_after = 1d
# Через пару недель удалим то, что так и не смогли доставить
timeout_frozen_after = 14d
# Выбираем, что мы будем логировать
# + - писать в логи,
# - - Не писать в логи.
# +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
begin acl
# Правила для всех получателей. Выше мы включили этот ACL
acl_check_rcpt:
# Сразу принять то, что пришло с локалхоста не по TCP/IP
accept hosts = :
# Запрещаем письма для локальных доменов, содержащие в локальной части
# символы @; %; !; /; |.
deny message = Restricted characters in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
# Проверяем недопустимые символы для
# нелокальных получателей:
deny message = Restricted characters in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
# Принимать почту на постмастера, не проверяя отправителя.
# Может использоваться для спама
#accept local_parts = postmaster
#domains = +local_domains
# Здесь можно запретить отправку от непроверенных пользователей
# Если нужно отправлять почту от logwatch etc., то лучше убрать
#require verify = sender
#accept hosts = +relay_from_hosts
#control = submission
#require message = relay not permitted
#domains = +local_domains : +relay_to_domains
require verify = recipient
# Все, что сюда дошло, пропускаем
accept
# Здесь мы проверяем тело сообщения
acl_check_data:
# Здесь проверка на вирусы
#warn malware = *
# message = This message contains a virus ($malware_name).
# А здесь - проверка на спам
warn spam = nobody
add_header = X-Spam-Flag: YES\n\
X-Spam_score: $spam_score\n\
X-Spam_score_int: $spam_score_int\n\
X-Spam_bar: $spam_bar\n\
X-Spam_report: $spam_report
# Остальное пропускаем
accept
acl_check_helo:
deny message = Invalid name in HELO EHLO command
log_message = Invalid name $sender_helo_name in HELO EHLO command
!hosts = /etc/mail/exim.whitelist.hosts
!verify = helo
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
# смотрим альясы
system_aliases:
driver = redirect
allow_fail
allow_defer
data = ${lookup mysql{SELECT goto FROM alias WHERE \
address='${quote_mysql:$local_part@$domain}' OR \
address='${quote_mysql:@$domain}'}}
# Всё что осталось - это локальные адресаты.
# Доставляем почту в dovecot
dovecot_user:
driver = accept
condition = ${lookup mysql{SELECT goto FROM \
alias WHERE \
address='${quote_mysql:$local_part@$domain}' OR \
address='${quote_mysql:@$domain}'}{yes}{no}}
transport = dovecot_delivery
begin transports
# На удалённые хосты доставляем по SMTP
remote_smtp:
driver = smtp
# Доставка локальным адресатам - в dovecot
# Надо заметить что тут использовалась ранее прямая доставка
# в директорию, но щас с портами стал-таки устанавливаться deliver
# программа dovecot занимающаяся доставкой мессаг.
# Соответственно юзаем его.
dovecot_delivery:
driver = pipe
command = /usr/lib/dovecot/deliver -d $local_part@$domain
message_prefix =
message_suffix =
delivery_date_add
envelope_to_add
return_path_add
log_output
user = vmail
# Доставка через пайп
address_pipe:
driver = pipe
return_output
# Транспорт для автоответов
address_reply:
driver = autoreply
begin retry
# Правила для повторных попыток доставки
# Сначала попытки раз 15 мин в течение 2 часов, потом, начиная с
# интервала в 1 час, увеличивая его в 1.5 раза, пытаемся доставить 16 часов.
# Потом раз в 6 часов, до истечения 4 суток
# Address or Domain Error Retries
# ----------------- ----- -------
* * F,2h,15m; G,16h,1h,1.5; F,4d,6h
# Преобразование адресов нам не нужно
begin rewrite
begin authenticators
# Здесь разные механизмы авторизации для разных клиентов
auth_plain:
driver = plaintext
public_name = PLAIN
server_prompts = Username:: : Password::
server_condition = ${if crypteq{$auth3}{${lookup mysql{SELECT password FROM \
mailbox WHERE username = '${quote_mysql:$auth2}'}}}{yes}{no}}
server_set_id = $auth2
auth_login:
driver = plaintext
public_name = LOGIN
server_condition = ${if crypteq{$auth2}{${lookup mysql{SELECT password FROM \
mailbox WHERE username = '${quote_mysql:$auth1}'}}}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $auth1
# А вот так мы можем передать аутентификацию на Dovecot SASL.
# Впрочем, CRAM-MD5 все равно не прокатит
auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth2
Ну и покажите свой конфиг, потому как я не могу понять какая авторизация у вас не работает.
[codebox]# Здесь разные механизмы авторизации для разных клиентов
auth_plain:
driver = plaintext
public_name = PLAIN
server_prompts = Username:: : Password::
server_condition = ${if crypteq{$auth3}{${lookup mysql{SELECT password FROM \
mailbox WHERE username = '${quote_mysql:$auth2}'}}}{yes}{no}}
server_set_id = $auth2
auth_login:
driver = plaintext
public_name = LOGIN
server_condition = ${if crypteq{$auth2}{${lookup mysql{SELECT password FROM \
mailbox WHERE username = '${quote_mysql:$auth1}'}}}{yes}{no}}
server_prompts = Username:: : Password::
server_set_id = $auth1
# А вот так мы можем передать аутентификацию на Dovecot SASL.
# Впрочем, CRAM-MD5 все равно не прокатит
auth_cram_md5:
driver = dovecot
public_name = CRAM-MD5
server_socket = /var/run/dovecot/auth-client
server_set_id = $auth2[/codebox]
вот три метода авторизации пользователей и все они сравнивают учетные данные в MySQL
Если вам необходимо разрешить релей пересылку с другого домена так за это отвечают строки
# Таким же образом задаём список доменов, с которых разрешён релей.
domainlist relay_to_domains = ${lookup mysql{DOMAIN_QUERY}}
# Список хостов, с которых разрешён релей без авторизации.
hostlist relay_from_hosts = localhost:127.0.0.1/8
и опять же домены которым разрешена пересылка хранятся в базе мускула либо необходимо жестко прописать ip хостов в hostlist relay_from_hosts
Всем спасибо, разобрался со всем!