Страница 1 из 1

Exim, Exchange ... NDR

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

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

Re: Exim, Exchange ... NDR

Добавлено: 2007-08-31 19:27:37
Alex Keda
анлим на ящики.

или пусть ексчейндж не принимает.

Re: Exim, Exchange ... NDR

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

Re: Exim, Exchange ... NDR

Добавлено: 2007-08-31 19:57:44
Alex Keda
ну, может есть возможность поставить от кого идёт рикошет?
если да - то ловить по этому имени и кормить какомунить скрипту перловому на exim`e

Re: Exim, Exchange ... NDR

Добавлено: 2007-09-03 9:28:54
gmn
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 Кб), чтобы не вставлять код.

Re: Exim, Exchange ... NDR

Добавлено: 2007-09-03 9:36:20
Alex Keda
как это - нету?
ща посомтрю - помоему архивы разрешены были

Re: Exim, Exchange ... NDR

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

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

Re: Exim, Exchange ... NDR

Добавлено: 2007-09-03 16:01:25
Alex Keda
ace, bz2, gtar, gz, rar, tar, zip
==========
или ты не можешь найти где добавлять?
пониже окна ввода сообщения, вкладка "Добавить вложения"

Re: Exim, Exchange ... NDR

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

Re: Exim, Exchange ... NDR

Добавлено: 2007-09-03 16:32:36
Alex Keda
пофикшено

Re: Exim, Exchange ... NDR

Добавлено: 2007-09-03 16:38:24
gmn
lissyara писал(а):пофикшено
Вижу. Спасибо.
Вот теперь могу вложить архив с VB скриптом, проверяющим лимиты ящиков на Exchange.