Exim + Dovecot проблема с отправкой вложений

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
diversunt
ефрейтор
Сообщения: 58
Зарегистрирован: 2007-12-02 20:43:13
Контактная информация:

Exim + Dovecot проблема с отправкой вложений

Непрочитанное сообщение diversunt » 2008-06-04 5:49:34

Странная вещь отправляю письма они доходят без проблем, делаю вложение менее 100кб тоже все в порядке. А вот если вложение более 100кб, то сообщение не куда не уходило. Bat выдавал ошибку типа "Сервер сообщает: Письмо не отправлено". В этот момент у меня стояли квоты на все почтовые ящики 1024MB. Подумал, что дело в этом, ибо в довекоте както коряво организованы квоты, выключил их, и Bat выдаёт ошибку "Сервер сообщает: Письмо не отправлено" при этом письмо остается в "не отправленных", НО письмо доставляется отправителю. Соответственно человек видит что письмо не отправлено и шлёт его и шлёт... В чем грабли?
конфиги такие:
exim configure:

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

#!/bin/sh
# $Cambridge: exim/exim-src/src/configure.default,v 1.13 2007/06/26 11:21:36 ph10 Exp $

primary_hostname = domen.ru


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

qualify_domain = domen.ru


qualify_recipient = domen.ru

allow_domain_literals = false


exim_user = mailnull

exim_group = mail

never_users = root

host_lookup = *


rfc1413_query_timeout = 0s


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 = 192.168.0.0/24

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



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

begin acl

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.domen.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 = 30s
  warn
        hosts = +relay_from_hosts:87.103.215.168/32:195.93.0.0/16
        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



########ROUTERS CONFIGURATION#############################################
#                      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


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}'}}
  #user = mailnull
  #group = mail
  #file_transport = address_file
  #pipe_transport = address_pipe

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




########TRANSPORTS CONFIGURATION##########################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################
#                       ORDER DOES NOT MATTER                        #
#     Only one appropriate transport is called for each 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
  
  
  


########RETRY CONFIGURATION###############################################
#                      RETRY CONFIGURATION                           #
######################################################################

begin retry


# Address or Domain    Error       Retries
# -----------------    -----       -------

*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h



########REWRITE CONFIGURATION#############################################
#                      REWRITE CONFIGURATION                         #
######################################################################

begin rewrite


######################################################################
#                   AUTHENTICATION CONFIGURATION                     #
######################################################################


begin authenticators

auth_plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${lookup mysql{SELECT `username` FROM \
                     `mailbox` WHERE `username` = \
                     '${quote_mysql:$auth2}' AND `password` = \
                     '${quote_mysql:$auth3}'}{yes}{no}}
  server_prompts = :
  server_set_id = $auth2

  auth_login:
  driver = plaintext
  public_name = LOGIN
  server_condition = ${lookup mysql{SELECT `username` FROM \
                     `mailbox` WHERE `username` = \
                     '${quote_mysql:$auth1}' AND `password` = \
                     '${quote_mysql:$auth2}'}{yes}{no}}
  server_prompts = Username:: : Password::
  server_set_id = $auth1

auth_cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
  server_secret = ${lookup mysql{SELECT `password` FROM \
                        `mailbox` WHERE `username` \
                        = '${quote_mysql:$auth1}'}{$value}fail}
  server_set_id = $auth2

Dovecot.conf

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

#!/bin/sh
base_dir = /var/run/dovecot/

protocols = imap pop3

listen = *

disable_plaintext_auth = no

shutdown_clients = yes

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


syslog_facility = mail


## SSL settings
ssl_disable = yes

## Login processes

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_greeting = dovecot MUA ready
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s


## Mailbox locations and namespaces
##

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

mail_extra_groups = mail

mail_full_filesystem_access = no


## Mail processes
mail_debug = yes

verbose_proctitle = yes

first_valid_uid = 25
#last_valid_uid = 0

first_valid_gid = 0
#last_valid_gid = 0

#max_mail_processes = 1024

#mail_process_size = 256

#mail_max_keyword_length = 50

#valid_chroot_dirs = 

#mail_chroot =


## Mailbox handling optimizations
##

#mail_cache_fields =
#mail_never_cache_fields =
#mail_cache_min_mail_count = 0
#mailbox_idle_check_interval = 30
#mail_save_crlf = no


## Maildir-specific settings
##

#maildir_stat_dirs = no
#maildir_copy_with_hardlinks = no

#maildir_copy_preserve_filename = no

## mbox-specific settings
##

#mbox_read_locks = fcntl
#mbox_write_locks = dotlock fcntl

# Максимальное время ожидания блокировки перед прерыванием (отменой).
#mbox_lock_timeout = 300
#mbox_dotlock_change_timeout = 120
#mbox_dirty_syncs = yes
#mbox_very_dirty_syncs = no
#mbox_lazy_writes = yes
#mbox_min_index_size = 0


## dbox-specific settings
##

# Максимальный размер файла dbox (в kB) с которым работает ротации.
#dbox_rotate_size = 2048

# Минимальный размер файла dbox (в kB) до ротации
# (перекрывается dbox_rotate_days)
#dbox_rotate_min_size = 16

# Максимальный возраст dbox файла в днях до ротации. День всегда начинается
# с полуночи, т.о. 1 = сегодня, 2 = вчера, и т.д. 0 = нет проверок.
#dbox_rotate_days = 0

## IMAP specific settings
##

protocol imap {
#  mail_plugins = quota #trash
  imap_client_workarounds = delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep
}

 
## POP3 specific settings
##

protocol pop3 {
  
  pop3_uidl_format = %08Xu%08Xv

  #mail_plugins = quota
  #mail_plugin_dir = /usr/local/lib/dovecot/pop3

  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}


## LDA specific settings
##

protocol lda {
  # Куда слать письма про превышение квоты
  postmaster_address = root@domain.ru
 # mail_plugins = quota

  auth_socket_path = /var/run/dovecot/auth-master
}

## Authentication processes
##

# Расположение исполняемого файла
#auth_executable = /usr/local/libexec/dovecot/dovecot-auth

# Установить максимальный размер процесса, в мегабайтах.
#auth_process_size = 256

#auth_cache_size = 0
#auth_cache_ttl = 3600
#auth_realms =
#auth_default_realm =
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
#auth_username_translation =
#auth_username_format =

#auth_master_user_separator =
#auth_anonymous_username = anonymous
#auth_verbose = no

auth_debug = yes

#auth_debug_passwords = yes
#auth_worker_max_count = 30

#auth_gssapi_hostname =
#auth_krb5_keytab =

auth default {
  mechanisms = plain
  # Добавлено для работы deliver от dovecot
   socket listen {
     master {
       path = /var/run/dovecot/auth-master
       mode = 0600
       user = mailnull
       #group = mail
     }
   }
 
 
 
  #passdb passwd-file {
  # Файл содержащий имена пользователей, по одному на строку:
  #args = /etc/dovecot.deny
  #deny = yes
  #}


  #passdb passwd {
    # [blocking=yes] - See userdb passwd for explanation
    #args =
  #}

  #passdb shadow {
    # [blocking=yes] - See userdb passwd for explanation
    #args =
  #}
   
  #passdb bsdauth {
    # [cache_key=<key>] - See cache_key in PAM for explanation.
    #args =
  #}

  #passdb passwd-file {
    # Path for passwd-file
    #args =
  #}

  #passdb checkpassword {
    # Path for checkpassword binary
    #args =
  #}

  # SQL database
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }

  #passdb ldap {
    # путь для конфигурационного файла LDAP, примеры в  doc/dovecot-ldap.conf
    #args =
  #}

  # vpopmail аутентификация
  #passdb vpopmail {
    # [cache_key=<key>] - Смотреть cache_key в PAM, для понимания.
    #args =
  #}

  #userdb passwd {
    # [blocking=yes] - By default the lookups are done in the main dovecot-auth
    # process. This setting causes the lookups to be done in auth worker
    # proceses. Useful with remote NSS lookups that may block.
    # NOTE: Be sure to use this setting with nss_ldap or users might get
    # logged in as each others!
    #args =
  #}

  # passwd-подобный файл с указанием местоположения
  # <doc/wiki/AuthDatabase.PasswdFile.txt>
  #userdb passwd-file {
    # путь к passwd-файлу
    #args =
  #}

  #userdb static {
    # Шаблон для параметров настройки. CМожет вернуть что-то, что userdb
    # обычно возвращает, т.е.: uid, gid, home, mail, nice
    #
    # Пара примеров:
    #
    #  args = uid=500 gid=500 home=/var/mail/%u
    #  args = uid=500 gid=500 home=/home/%u mail=mbox:/home/%u/mail nice=10
   #
    # If you use deliver, it needs to look up users only from the userdb. This
    # of course doesn't work with static because there is no list of users.
    # Normally static userdb handles this by doing a passdb lookup. This works
    # with most passdbs, with PAM being the most notable exception. If you do
    # the user verification another way, you can add allow_all_users=yes to
    # the args in which case the passdb lookup is skipped.
    #
    #args =
  #}

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

  #userdb prefetch {
  #}

  user = root

}


## Dictionary server settings
##


dict {
  #quota = mysql:/etc/dovecot-dict-quota.conf
}


## Plugin settings
##

plugin {
#  quota = maildir:storage=1024M
 
}
Ну а в логах это:

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

Jun  4 10:29:48 router dovecot: auth(default): client in: AUTH	1	PLAIN	service=POP3	lip=xxx.xxx.xxx.xxx	rip=yyy.yyy.yyy.yyy	resp=<hidden>
Jun  4 10:29:48 router dovecot: auth-worker(default): sql(root@domen.ru,yyy.yyy.yyy.yyy): query: SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = 'root@domen.ru' AND `active`='1'
Jun  4 10:29:48 router dovecot: auth(default): client out: OK	1	user=root@domen.ru
Jun  4 10:29:48 router dovecot: auth(default): master in: REQUEST	9	18215	1
Jun  4 10:29:48 router dovecot: auth-worker(default): sql(root@domen.ru,yyy.yyy.yyy.yyy): SELECT `maildir` AS `home`, 26 AS `uid`, 26 AS `gid` FROM `mailbox` WHERE `username` = 'root@domen.ru' AND `active`='1'
Jun  4 10:29:48 router dovecot: auth(default): master out: USER	9	root@domen.ru	home=domen.ru/root/	uid=26	gid=26
Jun  4 10:29:48 router dovecot: pop3-login: Login: user=<root@domen.ru>, method=PLAIN, rip=yyy.yyy.yyy.yyy, lip=xxx.xxx.xxx.xxx
Jun  4 10:29:48 router dovecot: POP3(root@domen.ru): Effective uid=26, gid=26
Jun  4 10:29:48 router dovecot: POP3(root@domen.ru): maildir: data=/home/mail/exim/domen.ru/root
Jun  4 10:29:48 router dovecot: POP3(root@domen.ru): maildir: root=/home/mail/exim/domen.ru/root, index=/home/mail/exim/domen.ru/root, control=, inbox=
Jun  4 10:29:48 router dovecot: POP3(root@domen.ru): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
Jun  4 10:29:48 router exim[18219]: no IP address found for host 178.223.kemer.ptl.ru (during SMTP connection from [yyy.yyy.yyy.yyy] I=[xxx.xxx.xxx.xxx]:25)
Jun  4 10:29:48 router dovecot: auth(default): new auth connection: pid=18220
Jun  4 10:30:02 router dovecot: auth(default): client in: AUTH	1	PLAIN	service=POP3	lip=xxx.xxx.xxx.xxx	rip=yyy.yyy.yyy.yyy	resp=<hidden>
Jun  4 10:30:02 router dovecot: auth-worker(default): sql(user1@domen.ru,yyy.yyy.yyy.yyy): query: SELECT `username` as `user`, `password` FROM `mailbox` WHERE `username` = 'user1@domen.ru' AND `active`='1'
Jun  4 10:30:02 router dovecot: auth(default): client out: OK	1	user=user1@domen.ru
Jun  4 10:30:02 router dovecot: auth(default): master in: REQUEST	10	18220	1
Jun  4 10:30:02 router dovecot: auth-worker(default): sql(user1@domen.ru,yyy.yyy.yyy.yyy): SELECT `maildir` AS `home`, 26 AS `uid`, 26 AS `gid` FROM `mailbox` WHERE `username` = 'user1@domen.ru' AND `active`='1'
Jun  4 10:30:02 router dovecot: auth(default): master out: USER	10	user1@domen.ru	home=domen.ru/user1/	uid=26	gid=26
Jun  4 10:30:02 router dovecot: pop3-login: Login: user=<user1@domen.ru>, method=PLAIN, rip=yyy.yyy.yyy.yyy, lip=xxx.xxx.xxx.xxx
Jun  4 10:30:02 router dovecot: POP3(user1@domen.ru): Effective uid=26, gid=26
Jun  4 10:30:02 router dovecot: POP3(user1@domen.ru): maildir: data=/home/mail/exim/domen.ru/user1
Jun  4 10:30:02 router dovecot: POP3(user1@domen.ru): maildir: root=/home/mail/exim/domen.ru/user1, index=/home/mail/exim/domen.ru/user1, control=, inbox=
Jun  4 10:30:02 router dovecot: POP3(user1@domen.ru): Disconnected: Logged out top=0/0, retr=0/0, del=0/0, size=0
Jun  4 10:30:02 router exim[18251]: no IP address found for host 178.223.kemer.ptl.ru (during SMTP connection from [yyy.yyy.yyy.yyy] I=[xxx.xxx.xxx.xxx]:25)
Jun  4 10:30:02 router dovecot: auth(default): new auth connection: pid=18252
Jun  4 10:32:50 router exim[18251]: 1K3fxP-0004kN-B1 <= user1@domen.ru H=(diversunt) [yyy.yyy.yyy.yyy] I=[xxx.xxx.xxx.xxx]:25 P=esmtpa A=auth_cram_md5: S=1971687 id=10036220.20080604093931@domen.ru from <user1@domen.ru> for root@domen.ru
Jun  4 10:32:50 router dovecot: auth(default): master in: USER	1	root@domen.ru	service=deliver
Jun  4 10:32:50 router dovecot: auth-worker(default): sql(root@domen.ru): SELECT `maildir` AS `home`, 26 AS `uid`, 26 AS `gid` FROM `mailbox` WHERE `username` = 'root@domen.ru' AND `active`='1'
Jun  4 10:32:50 router dovecot: auth(default): master out: USER	1	root@domen.ru	home=domen.ru/root/	uid=26	gid=26
Jun  4 10:32:50 router deliver(root@domen.ru): auth input: root@domen.ru
Jun  4 10:32:50 router deliver(root@domen.ru): auth input: home=domen.ru/root/
Jun  4 10:32:50 router deliver(root@domen.ru): auth input: uid=26
Jun  4 10:32:50 router deliver(root@domen.ru): auth input: gid=26
Jun  4 10:32:50 router deliver(root@domen.ru): Home dir not found: domen.ru/root/
Jun  4 10:32:50 router deliver(root@domen.ru): maildir: data=/home/mail/exim/domen.ru/root
Jun  4 10:32:50 router deliver(root@domen.ru): maildir: root=/home/mail/exim/domen.ru/root, index=/home/mail/exim/domen.ru/root, control=, inbox=
Jun  4 10:32:51 router deliver(root@domen.ru): msgid=<10036220.20080604093931@domen.ru>: saved mail to INBOX
Jun  4 10:32:51 router exim[18267]: 1K3fxP-0004kN-B1 => root <root@domen.ru> R=dovecot_user T=dovecot_delivery
Jun  4 10:32:51 router exim[18267]: 1K3fxP-0004kN-B1 Completed
Лучше два раза прочитать HandBook, чем 2 раза покраснеть задав глупый вопрос!

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

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: Exim + Dovecot проблема с отправкой вложений

Непрочитанное сообщение freeman » 2008-06-04 15:17:18

Может всразу и почтового клиента лог подробный приложить ? Bat умеет их писать. Увидели бы что ему не нравится.
Остатся должен только один ...

Аватара пользователя
diversunt
ефрейтор
Сообщения: 58
Зарегистрирован: 2007-12-02 20:43:13
Контактная информация:

Re: Exim + Dovecot проблема с отправкой вложений

Непрочитанное сообщение diversunt » 2008-06-06 19:35:14

не стоит разобрался... трабла была в том что стояла галочка в бате POP прежде SMTP убрал и фсе работает нормуль...
Лучше два раза прочитать HandBook, чем 2 раза покраснеть задав глупый вопрос!