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 Кб), чтобы не вставлять код.