Почтовый сервер Exim установка+настройка!

Автор shiko, 04 Июня 2009, 22:34

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

shiko

04 Июня 2009, 22:34 Последнее редактирование: 04 Июня 2009, 22:53 от shiko
Здравстуйте, как говориться мое почтение! Вопросик образовался, по теме почтового сервера нужно установить и настроить нормально. Скажите пожалуйста возможно ли наладить работу почтового сервера exim если доменного имени пока нет, если да то как это лучше сделать. И еще такой момент, может кто сталкивался как сделать так что бы можно было контролировать (просматривать) всю отправляемую почту, служащими организации в целях безопасности. Может кто знает толковую статью по этой теме, буду очень признателен.

Vicpo

насчет домена - можно использовать внутренний домен без выхода в интернет, но стоимость домена в наши дни не такая уж и заоблочная
по поводу копирования почты - можно реализовать, почта будет сыпаться на отдельный ящик, минус этого отслеживание уже отправленной почты.

Iskander

Я делал так же, как говорит Vicpo - просто настраивается на внутренний домен, на тот, который будете приобретать. На шлюзе потом натишь внутрь. По поводу контроля - вся почта должна копироваться на другой ящик, это самый простой вариант. Правда где-то давно попадался скриптик, через который который прозрачно проксировались 25/110 порты - достоинство в том, что можно перехватывать почту идущую на сторонние сервера, но это уже паранойя, имхо.

И действительно, стоимость домена в .kz - около 3000 в год. Копейки.

[quote name=\'Vicpo\']минус этого отслеживание уже отправленной почты.[/quote]

Поясни, что-то не понимаю...
Любовь и массовые расстрелы спасут мир.

shiko

05 Июня 2009, 14:08 #3 Последнее редактирование: 05 Июня 2009, 14:09 от shiko
Цитироватьминус этого отслеживание уже отправленной почты
Я тоже не совсем уловил мысль, т.е почта копируется на указанный ящик и отправляется адресату не дожидаясь его прочтения. Я так понял.
 Подскажите пожалуйста какой почтовый сервер на ваш взгляд сейчас наиболее актуален, а то их так много:    
    * Sendmail
    * Postfix
    * Exim
    * Qmail
я тут почитал одну статейку где предпочтение отдают Exim и Postfix, Sendmail на третьем тесте. Хотя Postfix превосходит Exim по управлению,   безопасности и функционалу. Хотелось бы узнать ваше мнение, что посоветуете на чем все таки лучше сделать свой выбор, с учетом того что я работаю в основном на Linux Mandriva.

Vicpo

Exim или Postfix
На счет безопасности можно поспорить, потому как за все существование Exim не было найдено ни одной серьезной уязвимости.
Про копирование почты: юзер отправил почту - почта отправляется получателю и копируется на проверочный ящик - потом СБ получает это письмо на свой почтовый клиент и читает, даже если что то там и было противоправное СБ встает перед фактом и идет на разборки. Вот собственно.
На мандриве дефолтом стоит постфикс, так что особо не парься а настраивай его (в Debian по дефолту Exim4 к примеру)

shiko

Спасибо за разъяснения, но я наверное с начало разберусь с доменом и DNS сервером, а уж потом примусь за настройку почтовика. А то, я так понял каша может получиться! http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/biggrin.gif\' class=\'bbc_emoticon\' alt=\':D\' />
Да и еще подскажите, вот к примеру для удобной работы php и mysql есть phpmyadmin, а у постфикс что нибудь есть, какая нибудь оболочка для удобной работы или все только через конфиги. Заранее благодарю.

Vicpo


kima

Здравствуйте! установил 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?

kima

нашел, надо было просто в главном конфиге поставить file = /var/mail/$local_part. извиняюсь за засорение эфира! http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/rolleyes.gif\' class=\'bbc_emoticon\' alt=\':rolleyes:\' />

kima

Здравствуйте. на серваке ставил конфигу с аутентификацией
[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]
и получилось так что проверка почты требует авторизации а отправка нет, хотя в источнике писалось что все будет работать симметрично. что я сделал не так?

Vicpo

Весь конфиг покажите, из этого куска можно понять только типы авторизации

kima

[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]

Vicpo

А по какой доке настраивали? Я с таким способом не сталкивался, настраивал связку Exim4 + Dovecot + MySQl
И вы не используете всех возможностей exim, согласно конфигу.
То есть нет проверок и прочих наворотов.

kima

у меня qpopper+exim4
если можете скиньте свои конфиги

Vicpo


kima

вообщем нашел ссылку:
http://www.lissyara.su/?id=1200
вдруг кому понадобится.
пока что читаю и наверно сделаю с SQL

Vicpo

Не все так гладко как там написано http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/smile.gif\' class=\'bbc_emoticon\' alt=\':)\' />
Ну будут вопросы задавайте.

Halfi

Цитата: 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 пока не могу въехать, помогите разобраться.

Vicpo

Цитата: Halfi от 19 Апреля 2010, 20:08У меня такая-же проблема, только настраивал по данной доке: http://agapoff.name/exim-dovecot.html но пока без clamav.
Пытаюсь понять релеи и почему не идет аворизации с нелокальных адресов. Перешел с postfix'a пока не могу въехать, помогите разобраться.

Конфиг покажите.

Halfi

20 Апреля 2010, 15:54 #19 Последнее редактирование: 20 Апреля 2010, 17:30 от Halfi
Цитата: 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