настройка exim

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Jeison
рядовой
Сообщения: 25
Зарегистрирован: 2007-12-08 0:52:36

настройка exim

Непрочитанное сообщение Jeison » 2011-04-27 13:17:06

делал все по этой вот статье (если знаете более лучшую дайте линк) http://www.opennet.ru/tips/info/2124.shtml

все сделал как там написано

Код: Выделить всё

freebsd# mail -s 'test message' admin@grantmotors.ru
teeeeest
.
EOT
freebsd# 2011-04-27 18:11:53 failed to expand "${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} }" (smtp_active_hostname): lookup of "select host from domains where ip = ''" gave DEFER: MYSQL connection failed: Access denied for user 'exim'@'localhost' (using password: YES)
подскажите что именно ему не нравится? в конфиге я вроде нигде не нашел ни слова про мускул

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: настройка exim

Непрочитанное сообщение hizel » 2011-04-27 13:51:24

в конфиге я вроде нигде не нашел ни слова про мускул
барабашки :-)
показывайте конфиг будем сообща искать
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: настройка exim

Непрочитанное сообщение blade_007 » 2011-04-27 15:44:09

Код: Выделить всё

MYSQL connection failed: Access denied for user 'exim'@'localhost' (using password: YES)
У вас проблема с mysql, возможно он НЕ запущен, либо параметры доступа (логин/пароль/БД) заданы неверно.

Jeison
рядовой
Сообщения: 25
Зарегистрирован: 2007-12-08 0:52:36

Re: настройка exim

Непрочитанное сообщение Jeison » 2011-05-04 9:05:27

с бд разобрался. сейчас вот такая вот фигня выскакивает:

Код: Выделить всё

May  4 09:56:44 freebsd dovecot: Dovecot v1.2.16 starting up
May  4 09:56:44 freebsd dovecot: net_connect_unix(/var/run/dovecot/auth-master) failed: No such file or directory
May  4 09:56:44 freebsd dovecot: Temporary failure in creating authentication processes, slowing down for now
May  4 09:56:44 freebsd dovecot: auth-worker(default): mysql: Connected to localhost (exim_db)
но при этом

Код: Выделить всё

ls /var/run/dovecot
auth-client             auth-worker.0           dict-server             login
auth-master             auth-worker.1694        dovecot.conf            master.pid
вот мои конфиги:

Код: Выделить всё

cat dovecot.conf
protocols = imap pop3

disable_plaintext_auth = no
shutdown_clients = yes

syslog_facility = mail

#ssl_disable = yes

ssl = no

login_greeting = Dovecot ready.

mail_location = maildir:/home/mail/domains/%d/%n/ maildir

mail_uid = 1001
mail_gid = 6

mail_privileged_group = mail

dotlock_use_excl = yes

fsync_disable = no
verbose_proctitle = yes
first_valid_uid = 26
first_valid_gid = 26

maildir_copy_with_hardlinks = yes

protocol imap {
  login_executable = /usr/local/libexec/dovecot/imap-login
  mail_executable = /usr/local/libexec/dovecot/imap
#  login_greeting_capability = yes
imap_capability = yes
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}

protocol pop3 {
  login_executable = /usr/local/libexec/dovecot/pop3-login
  mail_executable = /usr/local/libexec/dovecot/pop3
  pop3_uidl_format = %08Xu%08Xv
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}

auth_executable = /usr/local/libexec/dovecot/dovecot-auth
auth_process_size = 128
auth_verbose = no
auth_debug = no
auth_debug_passwords = no

auth default {
  mechanisms = plain login
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }

  userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }

  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0600
    }
    client {
      path = /var/run/dovecot/auth-client
      mode = 0660
    }
  }
}

auth external {
  socket connect {
    master {
      path = /var/run/dovecot/auth-master
    }
  }
}

dict {
  #quota = mysql:/usr/local/etc/dovecot-dict-quota.conf
  #expire = db:/var/db/dovecot/expire.db
}

plugin {
}

Код: Выделить всё

 cat dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=exim_db user=exim password=****
default_pass_scheme = PLAIN

password_query = SELECT login AS username, password FROM accounts WHERE login='%u'
user_query = SELECT login AS username, maildir AS mail FROM accounts WHERE login='%u'

Код: Выделить всё

cat ./exim/configure
primary_hostname = freebsd.gm.ru
CONFIG_PREFIX=/usr/local/etc/exim
BASEIP           = 192.168.0.72

qualify_domain = gm.ru

hide mysql_servers = localhost/exim_db/exim/****

host_lookup = *
domainlist local_domains = @:mysql;SELECT domain from domains where domain='$domain'
hostlist relay_from_hosts = localhost:127.0.0.0/8:192.168.0.0/24
message_id_header_domain = $sender_address_domain


acl_smtp_helo = acl_check_helo
acl_smtp_mail = acl_check_sender
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_mime = acl_check_mime

exim_user = mailnull
exim_group = mail
never_users = root

rfc1413_hosts = !*
rfc1413_query_timeout = 180s

dns_again_means_nonexist = !+local_domains

ignore_bounce_errors_after = 2d

timeout_frozen_after = 7d

message_size_limit = 25M

smtp_active_hostname = ${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} }
smtp_banner = ${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} } ESMTP Sendmail 8.14.3/8.14.3; $tod_full
#smtp_active_hostname = ${lookup mysql{select host from domains where ip = 're0'}{$value}{nechaevroman.ru} }
#smtp_banner = ${lookup mysql{select host from domains where ip = 're0'}{$value}{nechaevroman.ru} } ESMTP Exim + Mdaemon 8.14.3/8.14.3; $tod_full

spool_directory = /var/spool/exim
split_spool_directory = true

remote_max_parallel = 20
queue_run_max = 20
helo_allow_chars = :_

smtp_accept_max = 50
smtp_connect_backlog = 90
smtp_accept_max_per_host = 30
smtp_accept_queue = 67
smtp_accept_queue_per_connection = 30
recipients_max = 32
recipients_max_reject = true

accept_8bitmime

received_header_text = Received: \
        ${if def:sender_rcvhost {from $sender_rcvhost\n\t}\
        {${if def:sender_ident {from $sender_ident }}\
        ${if def:sender_helo_name {(helo=$sender_helo_name)\n\t}}}}\
        by ${lookup mysql{select host from domains where ip = '$interface_address'}{$value}{$primary_hostname} } \
        ${if def:received_protocol {with $received_protocol}} \
        ${if def:tls_cipher {($tls_cipher)\n\t}}\
        (8.13.1/8.13.1)\n\t\
        id $message_id\
        ${if def:received_for {\n\tfor $received_for}}



begin acl

acl_check_helo:
  accept  hosts         = +relay_from_hosts : 127.0.0.1

  deny    message       = Your host did not present HELO/EHLO greeting.
          log_message   = SPAM remote host did not present HELO/EHLO greeting.
          condition     = ${if def:sender_helo_name {false}{true}}

  deny    message       = Your host used our name in HELO/EHLO greeting.
          log_message   = SPAM remote host used our name in HELO/EHLO greeting. (host: $sender_helo_name)
          condition     = \
                        ${if \
                                match_domain{$sender_helo_name}\
                                {\
                                        $primary_hostname:\
                                        +local_domains\
                                }\
                                {true}{false}\
                        }

  deny    message       = Your host used our name in HELO/EHLO greeting.
          log_message   = SPAM remote host used our name in HELO/EHLO greeting. (ip: $sender_helo_name)
          condition     = ${lookup mysql{select host from domains where host = '$sender_helo_name'}{true}{false}}

  deny    message       = You host use dynamic address
          log_message   = SPAM remote host use dynamic address
          condition     = \
                        ${if \
                                match{$sender_host_name}\
                                {\
                                        ^.*([.-]\\d\{1,3\})([.-]\\d\{1,3\}).*|\
                                        ^.*([.-]\\d\{1,3\}).*client.*|\
                                        ^.*client.*([.-]\\d\{1,3\}).*|\
                                        ^.*dial(up|in).*([.-]\\d\{1,3\}).*|\
                                        ^.*(\\d\{1,3\}[.-]?).*dial(up|in).*|\
                                        ^.*(\\d\{1,3\}[.-]?).*dsl.*|\
                                        ^.*dsl.*(\\d\{1,3\}[.-]?).*|\
                                        ^.*dhcp.*(\\d\{1,3\}[.-]?).*|\
                                        ^.*(\\d\{1,3\}[.-]?).*dhcp.*|\
                                        ^.*(\\d\{1,3\}[.-]?).*ppp.*|\
                                        ^.*ppp.*(\\d\{1,3\}[.-]?).*|\
                                        ^.*(\\d\{1,3\}[.-]?).*pool.*|\
                                        ^.*pool.*(\\d\{1,3\}[.-]?).*\
                                }\
                                {yes}{no}\
                        }

  accept




acl_check_sender:
  accept  hosts         = :
  accept  hosts         = +relay_from_hosts

  accept  authenticated = *

  deny    senders       = *@+local_domains
          message       = relay not permitted

  warn    verify        = reverse_host_lookup
          message       = DNS-Warning: Reverse DNS lookup failed for host $sender_host_address

  deny    message       = You domain is in a blacklist.
          log_message   = Remote domain in the blacklist
          condition     = ${lookup mysql{select domain from spam_domains where domain='$sender_address_domain'}{true}{false}}

  deny    message       = You address is in a blacklist.
          log_message   = Address is in the blacklist
          condition     = ${lookup mysql{select sender from spam_emails where sender='$sender_address'}{true}{false}}

  deny    message       = You host is in a blacklist.
          log_message   = Host is in the blacklist
	  condition     = ${lookup mysql{select ip from spam_ip_senders where ip='$sender_host_address'}{true}{false}}

  accept



acl_check_rcpt:

  accept  hosts         = +relay_from_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


  require verify = sender

  accept  domains       = +local_domains
          endpass
          verify        = recipient

  accept  hosts         = +relay_from_hosts

  accept  authenticated = *
   
  deny    message       = relay not permitted



acl_check_mime:

  warn decode = default

  deny message = Blacklisted file extension detected
       condition = ${if match \
                        {${lc:$mime_filename}} \
                        {\N(\.cpl|\.pif|\.bat|\.scr|\.lnk|\.com)$\N} \
                     {1}{0}}
  

  deny    message       = Sorry, We do not speak in this language (charset: $mime_charset)
          log_message   = SPAM invalid language (charset: $mime_charset)
          condition     = \
                        ${if \
                                match{${lc:$mime_charset}}\
                                {\
                                        gb18030|\
                                        shift_jis\
                                       # big5\
                                }\
                                {true} {false}\
                        }

  accept


  warn    message       = WhiteListIP: YES
          condition     = ${lookup mysql{select ip from white_ip_senders where ip='$sender_host_address'}{true}{false}}

  warn    message       = WhiteListDomain: YES
          condition     = ${lookup mysql{select domain from white_domains where domain='$sender_address_domain'}{true}{false}}

  warn    message       = WhiteListSender: YES
          condition     = ${lookup mysql{select sender from white_emails where sender='$sender_address'}{true}{false}}

  accept  senders       = ${lookup mysql{select sender from white_emails where sender='$sender_address'}{$sender_address}{}}

  accept  hosts         = ${lookup mysql{select ip from white_ip_senders where ip='$sender_host_address'}{$sender_host_address}{}}

  accept  hosts         = ${lookup mysql{select domain from white_domains where domain='$sender_address_domain'}{$sender_host_name}{}}

          log_message   = SPAM message header fail syntax check
          !verify       = header_syntax

  warn    message       = X-Sender-Verify-Failed: No valid sender in message header
          log_message   = No valid sender in message header
          !verify       = header_sender

        accept



begin routers

#replace_header:
#  driver                = dnslookup
#  domains               = !+local_domains
#  transport             = remote_smtp
#  headers_remove        = \
#                        ${if \
#                                def:h_RelayHost: \
#                                {}\
#                                {\
#                                        Date : \
#                                        X-MimeOLE : \
#                                        X-Mailer : \
#                                        X-MSMail-Priority : \
#                                        User-Agent\
#                                }\
#                        }\
#                        : RelayHost : Received
#  headers_add           = \
#                        ${if \
#                                def:h_RelayHost: \
#                                {} \
#                                {\
#                                        Date: $tod_full\n\
#                                        User-Agent: Mozilla Thunderbird 2.0.0.22\
#                                }\
#                        }
#  no_more
#

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 alias from aliases where mail ='${quote_mysql:$local_part@$domain}'}{$value}fail}
  user = mailnull
  group = mail
  file_transport = address_file
  pipe_transport = address_pipe


userforward:
  driver = redirect
  file = ${lookup mysql{select maildir from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}/.forward
  user = mailnull
  group = mail
  no_verify
  no_expn
  check_ancestor
  allow_filter
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply
  condition = ${if exists{${lookup mysql{select maildir from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}/.forward} {yes} {no} }

autoreply_router:
  driver                = accept
  senders               = "! ^.*-request@.*:\
                           ! ^owner-.*@.*:\
                           ! ^postmaster@.*:\
                           ! ^listmaster@.*:\
                           ! ^mailer-daemon@.*"
  condition             = ${if exists{AUTOREPLYPATH/$local_part@$domain}{yes}{no}}
  unseen
  no_expn
  no_verify
  transport             = autoreply_transport

localuser:
  driver = accept
  condition = ${lookup mysql {select uid from accounts where login = '${quote_mysql:$local_part@$domain}'}{yes}{no}}
  transport = local_delivery
  cannot_route_message = Unknown user




begin transports

remote_smtp:
  driver = smtp
  connect_timeout       = 3m
  interface             = ${lookup mysql{select ip from domains where domain = '$sender_address_domain'} {$value} {BASEIP} } 
  helo_data             = ${lookup mysql{select host from domains where domain = '$sender_address_domain'} {$value} {$primary_hostname} }

local_delivery:
  driver = appendfile
  directory = ${lookup mysql{select maildir from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}
  create_directory
  directory_mode = 0770
  maildir_format
  delivery_date_add
  envelope_to_add
  return_path_add
  user                  = mailnull
  group                 = mail
  mode = 0660
  no_mode_fail_narrower
  headers_remove        = ${if match_domain{$sender_address_domain}{+local_domains}{received}{}} : RelayHost
  quota = ${lookup mysql{select mailquota from accounts where login = '${quote_mysql:$local_part@$domain}'}{$value}fail}M
  quota_warn_message = "\
          To: $local_part@domain\n\
        Subject: Your maildir is going full\n\
        This message is automaticaly gnerated by your mail server.\n\
        This means, that your mailbox is 75% full. If you would \n\
        override this limit new mail would not be delivered to you!\n"
  quota_warn_threshold = 75%

address_pipe:
  driver = pipe
  return_output

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

autoreply_transport:
  driver                = autoreply
  file                  = AUTOREPLYPATH/$local_part@$domain
  log                   = AUTOREPLYPATH/log/$local_part@$domain
  file_expand
  from                  = $local_part@$domain
  to                    = $sender_address
  user                  = mailnull
  subject               = Re: $h_subject:


address_reply:
  driver = autoreply



begin retry
*                      *           F,4h,5m; G,16h,1h,1.5; F,4d,6h



begin rewrite




begin authenticators

lookup_cram:
        driver = cram_md5
        public_name = CRAM-MD5
        server_secret = ${lookup mysql {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 mysql {select login from accounts where login='$1' and password='$2'}{yes}{no}}
        server_set_id = $1



blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: настройка exim

Непрочитанное сообщение blade_007 » 2011-05-04 10:02:46

Код: Выделить всё

net_connect_unix(/var/run/dovecot/auth-master) failed: No such file or directory
Проблема с запуском dovecot. Остановите dovecot, удалите старые auth-master, auth-client из /var/run/dovecot. также включите debug для сообщений и запустите dovecot.

Код: Выделить всё

auth_verbose = yes
auth_debug = yes

Jeison
рядовой
Сообщения: 25
Зарегистрирован: 2007-12-08 0:52:36

Re: настройка exim

Непрочитанное сообщение Jeison » 2011-05-04 14:51:04

Код: Выделить всё

# tail /var/log/maillog
May  4 15:49:29 freebsd dovecot: Dovecot v1.2.16 starting up
May  4 15:49:29 freebsd dovecot: net_connect_unix(/var/run/dovecot/auth-master) failed: No such file or directory
May  4 15:49:29 freebsd dovecot: Temporary failure in creating authentication processes, slowing down for now
May  4 15:49:29 freebsd dovecot: auth-worker(default): mysql: Connected to localhost (exim_db)
May  4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1349
May  4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1350
May  4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1351
May  4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1352
May  4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1353
May  4 15:49:30 freebsd dovecot: auth(default): new auth connection: pid=1354
с дебагом вот это пишет. понятия не имею что сие означает :(

Jeison
рядовой
Сообщения: 25
Зарегистрирован: 2007-12-08 0:52:36

Re: настройка exim

Непрочитанное сообщение Jeison » 2011-05-05 9:23:05

вообщем с чем то разобрался, с чем то не очень. сейчас такая беда. создаю через postfixadmin пользователей, он и создается в таблице postfix, а exim про них ничего и не знает. как сделать чтоб постфикс создавал пользователей и эксзим их видел?

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: настройка exim

Непрочитанное сообщение blade_007 » 2011-05-05 9:32:57

Поменять запросы в роутерах exim. На сайте (не форуме) есть статья как прикрутить postfixadmin к exim. Можно также заменить postfixadmin на vexim.