Exim, Exchange ... NDR

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Exim, Exchange ... NDR

Непрочитанное сообщение gmn » 2007-08-31 18:23:57

Всем привет.
Может кто делал или натолкнет на мысль ...
Есть Exim, за ним внутри сети Exchange.
Когда на Exchange у юзера переполнен ящик - Exim об этом не знает. Exchange принимает письмо. Потом смотрит, что ящик перепонлен и шлет отлуп.
Можно эти NDR зарезать на Exim, но надо чтобы отправитель знал, что письмо не доставлено.
С винды с помощью VbScript-а можно размеры ящиков посмотреть в хранилище Exchange.
Вопрос.
Как, чем, делать "посмотреть, не переполнен ли ящик у получателя на Exchange" не закрывая сессию приема письма из мира на Exim ?

Думал скриптом закидывать адреса с переполненными ящиками а базу MySQL, и проверять там - это один из вариантов. Но скрипт надо каждые минут 15 запускать :)
Какие еще варианты?
P.S. Exchange 2003

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

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение Alex Keda » 2007-08-31 19:27:37

анлим на ящики.

или пусть ексчейндж не принимает.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение gmn » 2007-08-31 19:44:14

lissyara писал(а):анлим на ящики.
Не катит. Диски не безграничны ... :(
или пусть ексчейндж не принимает.
Искал, как его этому научить, не нашел.
Он принимает, потом уже решает, что делать с письмом.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение Alex Keda » 2007-08-31 19:57:44

ну, может есть возможность поставить от кого идёт рикошет?
если да - то ловить по этому имени и кормить какомунить скрипту перловому на exim`e
Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение gmn » 2007-09-03 9:28:54

lissyara писал(а):ну, может есть возможность поставить от кого идёт рикошет?
Можно посмотреть, кому не доставлено письмо из-за переполнения ящика - парсить отлупы от Exchange.
если да - то ловить по этому имени и кормить какомунить скрипту перловому на exim`e
:( Не лучший вариант. Допустим, что адрес юзера, у которого переполнен ящик, я скриптом достану и в базу закину.
Но а как быть дальше? Если юзер ящие почистит? Надо как то из базы обратно выдернуть его адрес.

Пока вижу только один вариант. Писать скрипт (на том же Perl), запускать его, например, каждые 30 мин. и закидывать в таблицу MySQL адреса юзеров, у которых перепонлены ящики. Скрипт нашел, только не на Perl. Надо будет дорабатывать.

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

'==================================================================================================
' VBScript Source File 
'
' NAME: ShowMailboxLimits.VBS
' AUTHOR: Bharat Suneja
' DATE  : 10/25/2005
'
'==================================================================================================
' COMMENT: 
'
' This script shows mailbox limits for each user
'   
'==================================================================================================
strTitle = "List of users with inididual mailbox sizes" & VbCrLf & "Name,Limit,Stop Send,Stop Receive" 

'Pickup Named Arguments
Set colNamedArguments = WScript.Arguments.Named
strOutputFile = colNamedArguments.Item("f")
strNoConOutput = colNamedArguments.Item("s")
strHelp = colNamedArguments.Item("help")

'Detect help and write help text to console
WriteHelp



'Get RootDSE
Set objRootDSE = GetObject("LDAP://rootDSE")
strDomain = objRootDSE.Get("defaultNamingContext")
strADPath = "LDAP://" & strDomain
Set objDomain = GetObject(strADPath)
strOutput = strOutput & VbCrLf & "Domain: " & objDomain.distinguishedName

'Setup ADODB connection
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection


'Execute search command to look for Organization
    objCommand.CommandText = _
      "<" & strADPath & ">" & ";(&(homeMDB=*)(mDBUseDefaults=FALSE))" & ";distinguishedName,name,mDBStorageQuota,mDBOverQuotaLimit,mDBOverHardQuotaLimit" & _
      ";subtree"
      'Execute search to get Recordset
       Set objRecordSet = objCommand.Execute  
       strOutput = strOutput & VbCrLf & strTitle & VbCrLf &  "===================================="
       If objRecordSet.RecordCount = 0 Then
          strOutput = strOutput & VbCrLf & "No users with individual mailbox limits found!"
          WScript.Echo strOutput   
          WriteFile
          WScript.Quit
          Else
          

          
          
            While Not objRecordSet.EOF
              
              strOutput = strOutput & VbCrLf & objRecordSet.Fields("name") & ","
              
              varLimit = objRecordSet.Fields("mDBStorageQuota")
              If IsNull(varLimit) Then
              strOutput = strOutput & "Unlimited" & ","
                 Else
              strOutput = strOutput & varLimit/1000 & " MB," 
                 End If
              
              
              varStopReceive = objRecordSet.Fields("mDBOverQuotaLimit")
                
              If IsNull(varStopReceive) Then
              strOutput = strOutput & "No Stop Receive,"
                 Else
              strOutput = strOutput & varStopReceive/1000 & " MB," 
                 End If
              
              varStopSend = objRecordSet.Fields("mDBOverHardQuotaLimit")
              If IsNull(varStopSend) Then
                 strOutput = strOutput & "No Stop Send,"
                 Else
              strOutput = strOutput &varStopSend/1000 & " MB," 'objRecordSet.Fields("mDBOverHardQuotaLimit")
                 End If
                 'strOutput = strOutput & VbCrLf &  "----------------------"
              
              objRecordSet.MoveNext
              Wend
              WriteCon
              WriteFile
              End If
              
              '=======================================================
              '  FUNCTIONS
              '=======================================================
              
              Sub WriteFile
              'Open new text file, write info, close file
                If IsEmpty(strOutputFile) Then
                   WScript.Echo "No file output"
                 Else
                     Set objFSO = CreateObject("Scripting.FileSystemObject")
                     Set objFile = objFSO.CreateTextFile(strOutputFile)
                     'Write Stuff
                    objFile.WriteLine strOutput
                    'Close text file
                    objFile.Close
                    End If
                  End Sub
            
                  '---------------------------------
      'SUB Write Console
       Sub WriteCon
          If Not colNamedArguments.Exists("s") Then
          WScript.echo strOutput
          Else
          WScript.Echo "No console output"
          End If
       End Sub
       
            '------------------
            
            
                 SUB WriteHelp
       If colNamedArguments.Exists("help") Then
          strHelpText = "USAGE: showMailboxLimits.vbs" & VbCrLf & "OPTIONAL Arguments: /s:y   - no console output" & VbCrLf & _
          "/f:Output_File_Name.txt - writes output to txt file in the argument" & VbCrLf & "/help - help text" & VbCrLf & _
          "showMailboxLimits.vbs /f:c:\MailboxLimits.txt /s:y - produces " & VbCrLf & "file MailboxLimits.txt " & " and no console output"
       WScript.Echo strHelpText
       WScript.Quit
       End If
       End Sub
              
Жаль, нет в форуме (или не нашел) возможности приатачить файл (zip размером 1,8 Кб), чтобы не вставлять код.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение Alex Keda » 2007-09-03 9:36:20

как это - нету?
ща посомтрю - помоему архивы разрешены были
Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение gmn » 2007-09-03 15:53:54

lissyara писал(а):как это - нету?
ща посомтрю - помоему архивы разрешены были
Да, подскажи где. Не нашел :(

И, собственно по %subj% - думаю, что и не стоит заморачиваться, так как, например, выцепить юзера с переполненным ящиком на Exchange, который входит в какую-то рассылку - сложновато. По крайней мере если скриптик наваять и получится, то уж очень он сложный будет.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение Alex Keda » 2007-09-03 16:01:25

ace, bz2, gtar, gz, rar, tar, zip
==========
или ты не можешь найти где добавлять?
пониже окна ввода сообщения, вкладка "Добавить вложения"
Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение gmn » 2007-09-03 16:19:47

lissyara писал(а):ace, bz2, gtar, gz, rar, tar, zip
==========
или ты не можешь найти где добавлять?
пониже окна ввода сообщения, вкладка "Добавить вложения"
Не могу найти ...
Ссылку на скриншет кинул личным сообщением.

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35426
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение Alex Keda » 2007-09-03 16:32:36

пофикшено
Убей их всех! Бог потом рассортирует...

Аватара пользователя
gmn
сержант
Сообщения: 239
Зарегистрирован: 2007-02-28 18:01:37
Откуда: UA, Kiev
Контактная информация:

Re: Exim, Exchange ... NDR

Непрочитанное сообщение gmn » 2007-09-03 16:38:24

lissyara писал(а):пофикшено
Вижу. Спасибо.
Вот теперь могу вложить архив с VB скриптом, проверяющим лимиты ящиков на Exchange.
Вложения
showmailboxlimits.zip
This script shows mailbox limits for each user
(1.79 КБ) 20 скачиваний