авторизованная отправка

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 10:17:13

Народ, пните в нужную сторону.
Есть почтовик, из локальной сети отправка писем проходит штатно.
Как ексиму сказать, что бы он мог от своих же пользователей, но не из локальной сети принимать и отправлять почту?
думается можно как-то с помощью авторизации на СМТП сделать, не пнете куда смотреть?
потому как сейчас он проверяет юзера на спам и не пропускает почту. как это убрать для авторизованных пользователей?
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Хостинговая компания 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/

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

Re: авторизованная отправка

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

ДО проверок на диалап и прочее на стадии RCPT сделать:

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

accept 
authenticated = *
logwrite = auth=$authenticated_id, [$sender_host_address]
и конечно, настроить аутентификацию. В любом случае без понимания на каком этапе пользователь получает отлуп, сложно что-то конкретное сказать.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 11:19:45

а подскажите еще на счет авторизации
Опция “server_” используется когда exim выступает в роли сервера, и “client_” - когда он выступает в роли клиента.
в этом случае у меня exim как сервер выступает? т.е. принимает почту от клиента, так ведь?
но получается, что если я ставлю что-то примерно:

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

PLAIN:                                                                                                                                                                                       
  driver                     = plaintext                                                                                                                                                     
  public_name            = PLAIN                                                                                                                                                         
  server_set_id              = $auth2                                                                                                                                                        
  server_prompts             = :                                                                                                                                                             
  server_condition           = ${lookup mysql{SELECT `username` FROM \                                                                                                                       
                     `mailbox` WHERE `username` = \                                                                                                                                          
                     '${quote_mysql:$auth2}' AND `password` = \                                                                                                                              
                     '${quote_mysql:$auth3}'}{yes}{no}}                                                                                                                                      
#  server_advertise_condition = ${if def:tls_cipher }                                                                                                                                        
                                                                                                                                                                                             
LOGIN:                                                                                                                                                                                       
  driver                     = plaintext                                                                                                                                                     
  public_name            = LOGIN                                                                                                                                                         
  server_set_id              = $auth1                                                                                                                                                        
  server_prompts             = <| Username: | Password:                                                                                                                                      
  server_condition           = ${lookup mysql{SELECT `username` FROM \                                                                                                                       
                     `mailbox` WHERE `username` = \                                                                                                                                          
                     '${quote_mysql:$auth1}' AND `password` = \                                                                                                                              
                     '${quote_mysql:$auth2}'}{yes}{no}}                                                                                                                                      
#  server_advertise_condition = ${if def:tls_cipher }   
то у меня отбиваются письма от внешних SMTP-серверов

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

2011-05-05 11:12:43 LOGIN authenticator failed for (nb2) [194.106.234.233] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=r.steurer@domain.com)
2011-05-05 11:12:51 LOGIN authenticator failed for (nb2) [194.106.234.233] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=r.steurer@domain.com)
2011-05-05 11:12:52 LOGIN authenticator failed for (nb2) [194.106.234.233] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=r.steurer@domain.com)
2011-05-05 11:12:53 LOGIN authenticator failed for (nb2) [194.106.234.233] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=r.steurer@domain.com)
ядерный взрыв...смертельно красиво...жаль, что не вечно...

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

Re: авторизованная отправка

Непрочитанное сообщение blade_007 » 2011-05-05 11:31:34

попробуйте явно выставить тип аутентификации в клиенте как PLAIN, поскольку у вас проблемы с LOGIN-аутентификатором.
попробуйте заменить

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

server_prompts             = <| Username: | Password:
на
server_prompts             = Username:: : Password::

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 11:37:55

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

но таже ошибка и при вводе авторизационных данных (логин/пароль)...может запрос в базу не правильный...

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

2011-05-05 11:35:09 PLAIN authenticator failed for ([192.168.0.77]) [92.112.185.122] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=eugene@domain.com.ua)
2011-05-05 11:35:10 LOGIN authenticator failed for ([192.168.0.77]) [92.112.185.122] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=eugene@domain.com.ua)
2011-05-05 11:35:42 PLAIN authenticator failed for ([192.168.0.77]) [92.112.185.122] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=eugene@domain.com.ua)
2011-05-05 11:35:43 LOGIN authenticator failed for ([192.168.0.77]) [92.112.185.122] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=eugene@domain.com.ua)
ядерный взрыв...смертельно красиво...жаль, что не вечно...

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

Re: авторизованная отправка

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

Тут поможет только отладка (exim -bd -d+all). Может и запрос не правильный.. Попробуйте переделать так:

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

server_condition = ${if crypteq{$2} {${lookup mysql{SELECT crypt FROM users \ 
        WHERE id = '${quote_mysql:${local_part:$1}}' \ 
        AND passwd = '${quote_mysql:$2}' \ 
        AND active = 'Y'}{$value}{*}}}{yes}{no}}
Поскольку пароль передается в открытом виде, а в базе в зашифрованном, поэтому я криптую перед сравнением.

Копипаста из документации: Т.е. раскрытие server_condition должно быть “1”, “yes”, or “true”, для успешной авторизации.

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

Once a suf?cient number of data strings have been received, server_condition is expanded. If the
expansion is forced to fail, authentication fails. Any other expansion failure causes a temporary error
code to be returned. If the result of a successful expansion is an empty string, “0”, “no”, or “false”,
authentication fails. If the result of the expansion is “1”, “yes”, or “true”, authentication succeeds and
the generic server_set_id option is expanded and saved in $authenticated_id. For any other result, a
temporary error code is returned, with the expanded string as the error text.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 12:06:54

ну да, а для внешних СМТП? они то не знаю моих паролей...
как с ними быть?
в Керио это как-то знаю работает, правда самого механизма не изучал....думаю, что и тут тоже можно сделать
ядерный взрыв...смертельно красиво...жаль, что не вечно...

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

Re: авторизованная отправка

Непрочитанное сообщение blade_007 » 2011-05-05 12:07:43

В догонку. Внешним серверам НЕ НУЖНО авторизоваться на вашем сервере, чтоб отправить почту. Авторизоваться нужно пользователям, чтоб отправить почту через ваш сервер.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 12:30:56

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

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 13:16:14

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

мое вот:

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

  server_condition           = ${if crypteq{$2} {${lookup mysql{SELECT `username` FROM `mailbox` \                                                                                           
                               WHERE `username` = '${quote_mysql:$auth1}' \                                                                                                                  
                               AND `password` = '${quote_mysql:$2}' \                                                                                                                        
                               AND `active` = '1'}{$value}{*}}}{yes}{no}}                                                                                                                    
                                                                                        
ядерный взрыв...смертельно красиво...жаль, что не вечно...

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

Re: авторизованная отправка

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

вместо crypteq - использовать eq

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 15:17:55

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

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 15:19:38

стоп, а что у вас возвращает запрос:

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

SELECT crypt FROM users \ 
        WHERE id = '${quote_mysql:${local_part:$1}}' \ 
        AND passwd = '${quote_mysql:$2}' \ 
        AND active = 'Y'
?
может он пароль зашифрованный возвращает? тогда я не то сравниваю...
ядерный взрыв...смертельно красиво...жаль, что не вечно...

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

Re: авторизованная отправка

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

Еще раз. Пользователь передает НЕшифрованный пароль. У меня в базе хранится ШИФРОВАННЫЙ пароль. Для сверки паролей я шифрую переданный пользователем пароль и сравниваю его с тем что есть в базе (шифрованным). В вашем случае вместо crypteq стоит использовать eq. Т.е. сравнивать строки (пароли) без шифрования.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 15:59:08

у меня в базе пароли тоже в шифрованном виде.
поэтому пытаюсь использовать crypteq

все правильно, как у вас.
НО авторизация все равно не проходит...
и в дебаге видно :

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

15:13:22 19984 Connection request from 92.112.16.249 port 25464
15:13:22 19984 interface address=91.203.xx.xx port=25
15:13:22 19984 search_tidyup called
15:13:22 19984 1 SMTP accept process running
15:13:22 19984 Listening...
15:13:22 19985 sender_fullhost = [92.112.16.249]
15:13:22 19985 sender_rcvhost = [92.112.16.249]
15:13:22 19985 Process 19985 is handling incoming connection from [92.112.16.249]
15:13:22 19985 checking for IP options
15:13:22 19985 no IP options found
15:13:22 19985 host in host_lookup? no (option unset)
15:13:22 19985 set_process_info: 19985 handling incoming connection from [92.112.16.249] I=[91.203.xx.xx]:25
15:13:22 19985 host in host_reject_connection? no (option unset)
15:13:22 19985 host in sender_unqualified_hosts? no (option unset)
15:13:22 19985 host in recipient_unqualified_hosts? no (option unset)
15:13:22 19985 host in helo_verify_hosts? no (option unset)
15:13:22 19985 host in helo_try_verify_hosts? no (option unset)
15:13:22 19985 host in helo_accept_junk_hosts? no (end of list)
15:13:22 19985 expanding: $primary_hostname, ESMTP ready
15:13:22 19985    result: mail.domain.com.ua, ESMTP ready
15:13:22 19985 SMTP>> 220 mail.domain.com.ua, ESMTP ready
15:13:22 19985 Process 19985 is ready for new message
15:13:22 19985 smtp_setup_msg entered
15:13:22 19985 SMTP<< EHLO [192.168.0.77]
15:13:22 19985 Actual local interface address is 192.168.0.131 (ste0)
15:13:22 19985 Actual local interface address is 127.0.0.1 (lo0)
15:13:22 19985 Actual local interface address is 91.203.xx.xx (ng0)
15:13:22 19985 [192.168.0.77] in helo_lookup_domains? no (end of list)
15:13:22 19985 sender_fullhost = ([192.168.0.77]) [92.112.16.249]
15:13:22 19985 sender_rcvhost = [92.112.16.249] (helo=[192.168.0.77])
15:13:22 19985 set_process_info: 19985 handling incoming connection from ([192.168.0.77]) [92.112.16.249] I=[91.203.xx.xx]:25
15:13:22 19985 host in pipelining_advertise_hosts? yes (matched "*")
15:13:22 19985 host in auth_advertise_hosts? yes (matched "*")
15:13:22 19985 SMTP>> 250-mail.domain.com.ua Hello [192.168.0.77] [92.112.16.249]
15:13:22 19985 250-SIZE 57671680
15:13:22 19985 250-PIPELINING
15:13:22 19985 250-AUTH LOGIN
15:13:22 19985 250 HELP
15:13:22 19985 SMTP<< AUTH LOGIN
15:13:22 19985 SMTP>> 334 VXNlcm5hbWU6
15:13:22 19985 SMTP<< ZXVnZW5lQHBvbGltYXNoLmNvbS51YQ==
15:13:22 19985 SMTP>> 334 UGFzc3dvcmQ6
15:13:23 19985 SMTP<< c2NoaXpvaWQ=
15:13:23 19985 LOGIN authenticator:
15:13:23 19985   $auth1 = eugene@domain.com.ua
15:13:23 19985   $auth2 = PASSWORD
15:13:23 19985   $1 = eugene@domain.com.ua
15:13:23 19985   $2 = PASSWORD
15:13:23 19985 expanding: $auth2
15:13:23 19985    result: PASSWORD
15:13:23 19985 expanding: $auth1
15:13:23 19985    result: eugene@domain.com.ua
15:13:23 19985 expanding: $auth2
15:13:23 19985    result: PASSWORD
15:13:23 19985 expanding: SELECT `username` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}' AND `active` = '1'
15:13:23 19985    result: SELECT `username` FROM `mailbox` WHERE `username` = 'eugene@domain.com.ua' AND `password` = 'PASSWORD' AND `active` = '1'
15:13:23 19985 search_open: mysql "NULL"
15:13:23 19985 search_find: file="NULL"
15:13:23 19985   key="SELECT `username` FROM `mailbox` WHERE `username` = 'eugene@domain.com.ua' AND `password` = 'PASSWORD' AND `active` = '1'" partial=-1 affix=NULL starflags=0
15:13:23 19985 LRU list:
15:13:23 19985 internal_search_find: file="NULL"
15:13:23 19985   type=mysql key="SELECT `username` FROM `mailbox` WHERE `username` = 'eugene@domain.com.ua' AND `password` = 'PASSWORD' AND `active` = '1'"
15:13:23 19985 database lookup required for SELECT `username` FROM `mailbox` WHERE `username` = 'eugene@domain.com.ua' AND `password` = 'PASSWORD' AND `active` = '1'
15:13:23 19985 MySQL query: SELECT `username` FROM `mailbox` WHERE `username` = 'eugene@domain.com.ua' AND `password` = 'PASSWORD' AND `active` = '1'
15:13:23 19985 MYSQL new connection: host=localhost port=0 socket=NULL database=exim user=exim
15:13:23 19985 MYSQL: no data found
15:13:23 19985 lookup failed
15:13:23 19985 expanding: $value
15:13:23 19985    result: 
15:13:23 19985 skipping: result is not used
15:13:23 19985 expanding: *
15:13:23 19985    result: *
15:13:23 19985 expanding: ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}' AND `active` = '1'}{$value}{*}}
15:13:23 19985    result: *
15:13:23 19985 crypteq: using crypt()
15:13:23 19985   subject=**0MOFC44JnkE
15:13:23 19985   crypted=*
15:13:23 19985 condition: crypteq{$auth2}{${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}' AND `active` = '1'}{$value}{*}}}
15:13:23 19985    result: false
15:13:23 19985 expanding: yes
15:13:23 19985    result: yes
15:13:23 19985 skipping: result is not used
15:13:23 19985 expanding: no
15:13:23 19985    result: no
15:13:23 19985 expanding: ${if crypteq{$auth2}{${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}' AND `active` = '1'}{$value}{*}}}{yes}{no}}
15:13:23 19985    result: no
15:13:23 19985 expanded string: no
15:13:23 19985 expanding: $auth1
15:13:23 19985    result: eugene@domain.com.ua
15:13:23 19985 SMTP>> 535 Incorrect authentication data
15:13:23 19985 LOG: MAIN REJECT
15:13:23 19985   LOGIN authenticator failed for ([192.168.0.77]) [92.112.16.249] I=[91.203.xx.xx]:25: 535 Incorrect authentication data (set_id=eugene@domain.com.ua)
15:13:30 19985 SMTP<< QUIT
15:13:30 19985 SMTP>> 221 mail.domain.com.ua closing connection
15:13:30 19985 LOG: smtp_connection MAIN
15:13:30 19985   SMTP connection from ([192.168.0.77]) [92.112.16.249] I=[91.203.xx.xx]:25 closed by QUIT
15:13:30 19985 search_tidyup called
15:13:30 19985 close MYSQL connection: localhost/exim/exim
15:13:30 19984 child 19985 ended: status=0x0
15:13:30 19984 0 SMTP accept processes now running
15:13:30 19984 Listening...
где PASSWORD - это пароль в незашифрованном виде, т.е. тот, который я ручками вбиваю в сандерберде при отправке почты.
ядерный взрыв...смертельно красиво...жаль, что не вечно...

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

Re: авторизованная отправка

Непрочитанное сообщение blade_007 » 2011-05-05 16:06:26

Обратите внимание
Вы сравниваете crypteq(пароль) И username из БД. Разница думаю очевидна.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 16:08:44

я у вас там выше спрашивал. т.е. у вас поле crypt в SQL-запросе возвращает пароль в зашифрованном виде? так?
ядерный взрыв...смертельно красиво...жаль, что не вечно...

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 16:09:20

просто везде в конфигах запрос возвращает имя пользователя...

и еще , на всякий случай, пользователей заношу с помощью postfixadmin, в настройках которого указано:

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

$CONF['encrypt'] = 'md5crypt';
ексимовская функция crypt поймет такой пароль, не в курсе?
ядерный взрыв...смертельно красиво...жаль, что не вечно...

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

Re: авторизованная отправка

Непрочитанное сообщение blade_007 » 2011-05-05 16:15:55

crypt из БД возвращает зашифрованный пароль.
Насчет md5 - надо пробовать.

Аватара пользователя
schizoid
подполковник
Сообщения: 3228
Зарегистрирован: 2007-03-03 17:32:31
Откуда: Украина, Чернигов
Контактная информация:

Re: авторизованная отправка

Непрочитанное сообщение schizoid » 2011-05-05 16:24:04

в общем вроде разобрался. я так понял, чтьо у вас в базе хранятся пароли как в зашифрованном виде, так и в открытом (поля crypt и passwd). У меня же только в криптованом, по-этому селект вида :

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

SELECT `username` FROM `mailbox` \                                                                                           
                               WHERE `username` = '${quote_mysql:$auth1}' \                                                                                                                  
                               AND `password` = '${quote_mysql:$2}' \                                                                                                                        
                               AND `active` = '1'
не проходил, потому что `password` = '${quote_mysql:$2}' - всегда было фалсе.
закоментил проверку пароля, сделал так:

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

  server_condition           = ${if crypteq{$2}{${lookup mysql{SELECT `password` FROM `mailbox` \                                                                                            
                               WHERE `username` = '${quote_mysql:$auth1}' \                                                                                                                  
                               AND `active` = '1'}{$value}{*}}}{yes}{no}}    
авторизация заработала.
при чем вроде как мне и нужно. локально и от СМТП серверов (которые могут пройти проверку на спам и т.д.) почта ходит, по идее и от пользователя с правильно настроенным доменом без авторизации тоже придет . ну и с авторизацией из вне локальной сети почта ходит без прверок, как и должно быть.
спасибо вам огромное за терпение :)
ядерный взрыв...смертельно красиво...жаль, что не вечно...