снова EXIM+DOVECOT+MYSQL

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

снова EXIM+DOVECOT+MYSQL

Непрочитанное сообщение 100matolog » 2009-10-22 20:09:45

Вообщем когда собирали сервер прощелкали и выделили слишком мало место под /var
в итоге что я сделал - перенес базы и почтовую папку /var/mail/ на раздел /opt с большей дисковой емкостью и оттуда сделал симлинки обратно


Результат - при попытке послать письмо какомунибудь юзеру заканчивается атлупом

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

This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:

  maxim@домен.com.ua
    SMTP error from remote mail server after RCPT TO:<maxim@lдомен.com.ua>:
    host mx.colocall.net [62.149.2.56]: 550 5.1.1 <maxim@домен.com.ua>... User unknown
Плюнул на симлинки и прописал в конфигах прямой путь к папке с почтой


В логах екзима и довекота особых ругательств нет.

Конфиги
ексим

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

[root@mail /usr/local/etc/exim]# cat configure
#daemon_smtp_ports = 25:465:587
#tls_on_connect_ports = 465
primary_hostname = mail.домен.com.ua
hide mysql_servers = localhost/exim/exim/exim

domainlist local_domains = ${lookup mysql{SELECT `domain` \
                        FROM `domain` WHERE \
                        `domain`='${domain}' AND \
                        `active`='1'}}

domainlist relay_to_domains = ${lookup mysql{SELECT `domain` \
                        FROM `domain` WHERE \
                        `domain`='${domain}' AND \
                        `active`='1'}}

hostlist   relay_from_hosts = localhost:127.0.0.0/8:192.168.0.0/24
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data

av_scanner = clamd:/var/run/clamav/clamd.sock
qualify_domain = mail.домен.com.ua


qualify_recipient = mail.домен.com.ua
allow_domain_literals = false


acl_smtp_connect = acl_check_connect
exim_user = mailnull
exim_group = mail
never_users = root

host_lookup = *

rfc1413_query_timeout = 0s

#tls_on_connect_ports = 465

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 = 127.0.0.1/8

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

syslog_timestamp = no

######################################################################
begin acl

acl_check_connect:
accept hosts = localhost : 127.0.0.1
control = no_enforce_sync
accept


acl_check_rcpt:

  accept  hosts = :

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

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

  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 : !81-196.itpartner-kem.ru: !127.0.0.1
          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ЕН ФЕИ, ЛФП ОЕ РЙЫЕФ ПФРТБЧЙФЕМС"

  deny    message       = "your hostname is bad (adsl, poll, ppp & etc)."
          condition     = ${if match{$sender_host_name}  {adsl|dialup|pool|peer|dhcp}  {yes}{no}}

  warn  hosts = 127.0.0.1:localhost
   control = no_enforce_sync

  warn
        set acl_m0 = 10s
  warn
        hosts = +relay_from_hosts
        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 \n $dnslist_text"
#          dnslists      = opm.blitzed.org : cbl.abuseat.org : bl.csma.biz : dynablock.njabl.org




  accept  authenticated = *
          control       = submission


  require message = relay not permitted
          domains = +local_domains : +relay_to_domains


  require verify = recipient


  accept


acl_check_data:

  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 mysql{SELECT `goto` FROM `alias` WHERE \
     `address`='${quote_mysql:$local_part@$domain}' OR \
  `address`='${quote_mysql:@$domain}'}}

 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


remote_smtp:
  driver = smtp

dovecot_delivery:
  driver = pipe
  command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
  message_prefix =
  message_suffix =
  delivery_date_add
  envelope_to_add
  return_path_add
  log_output
  user = mailnull

address_pipe:
  driver = pipe
  return_output

address_reply:
  driver = autoreply



######################################################################

begin authenticators

auth_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1

auth_login:
  driver = dovecot
  public_name = LOGIN
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1

auth_cram_md5:
  driver = dovecot
  public_name = CRAM-MD5
  server_socket = /var/run/dovecot/auth-client
  server_set_id = $auth1
конфиг довекота

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

[root@mail /usr/local/etc]# cat dovecot.conf | more
base_dir = /var/run/dovecot/

protocols = imap pop3

listen = *

disable_plaintext_auth = no

shutdown_clients = yes

log_path = /var/log/dovecot.log

info_log_path = /var/log/dovecot_auth.log

log_timestamp = "%b %d %H:%M:%S "


syslog_facility = mail

ssl = no

login_dir = /var/run/dovecot/login

login_chroot = yes

login_user = dovecot

login_process_size = 64

login_process_per_connection = yes

login_processes_count = 3

login_max_processes_count = 64

#login_max_logging_users = 128 <D2><D5><C7><C1><CC><D3><D1> <D0><D2><C9><DB><CC><CF><D3><D8> <DA><C1><CB><CF><CD><C5><CE><D4><C9><D4><D8>

login_greeting = dovecot MUA ready

login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c

login_log_format = %$: %s


mail_location = maildir:/opt/mail/exim/%d/%n

#namespace private {
  #separator = /
 # prefix =/var/mail/exim/
  # If you don't set "location" here, it uses the mail_location setting
#  location = maildir:/var/mail/exim/%d/%n
#  # Only one namespace contains the user's default INBOX:
#  inbox = yes
#}

#namespace public {
#  separator = /
#  prefix = Public/
#  # This assumes that the user has write access to the directory:
#  location = maildir:'/var/mail/exim/Public'
#  hidden = no
#  }

mail_privileged_group  = mail

mail_full_filesystem_access = no

mail_debug = yes

verbose_proctitle = yes

first_valid_uid = 25

first_valid_gid = 0
protocol imap {
  imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep
}


protocol pop3 {
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}



protocol lda {
  # <EB><D5><C4><C1> <D3><CC><C1><D4><D8> <D0><C9><D3><D8><CD><C1> <D0><D2><CF> <D0><D2><C5><D7><D9><DB><C5><CE><C9><C5> <CB><D7><CF><D4><D9>
  postmaster_address = support@домен.com.ua
  auth_socket_path = /var/run/dovecot/auth-master
}

auth_debug = yes

auth default {
  mechanisms = plain login cram-md5

   socket listen {
     master {
       path = /var/run/dovecot/auth-master
       mode = 0600
       user = mailnull
       #group = mail
     }
client {
     path = /var/run/dovecot/auth-client
     mode = 0660
     user = mailnull
       }
   }



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

  user = root

}




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

[root@mail /usr/local/etc]# cat dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=exim  user=exim password=exim
default_pass_scheme = PLAIN

password_query = SELECT `username` as `user`, `password` FROM  \
`mailbox` WHERE `username` = '%n@%d' AND `active`='1'

user_query = SELECT `maildir` AS `home`, 26 AS `uid`, 26 AS `gid` \
FROM `mailbox` WHERE `username` = '%n@%d' AND `active`='1'
где косяк может быть? коннект к бд есть . постфиксадмином новые юзера создаются в базе с новым путем. Также исправил пути в БД у юзеров.
Все равно атлуп

ЗЫ
хороший человек подсказал
замаунтил так

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

 mount -t nullfs /opt/mysql/ /var/db/mysql/
 mount -t nullfs /opt/mail/ /var/mail/
соотвественно вернул пути в конфигах обратно на старые

все равно не пашет

PSPS
а внутри когда через вебмыло шлю сам на себя - мыло ходит

Хостинговая компания 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/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

Re: снова EXIM+DOVECOT+MYSQL

Непрочитанное сообщение 100matolog » 2009-10-22 21:03:50

я ИДИОД!.. :st: :st: :st:
я забыл включить мх запись в домене..просто когда лежал сервак в панели управления доменом поставил переадресацию всей почты на одно мыло..

Аватара пользователя
Laa
ст. лейтенант
Сообщения: 1032
Зарегистрирован: 2008-02-21 18:25:33
Откуда: Украина, Россия

Re: снова EXIM+DOVECOT+MYSQL

Непрочитанное сообщение Laa » 2009-10-23 9:21:07

Та бывает... ;-)
exim: помните, что выдавая deny, вы можете недоставить ваше же письмо, зарубив sender-verify удаленного MTA к вашему MTA!!!