Страница 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.