У меня есть слушатель, который обрабатывает электронные письма в inetpub/mailroot/Queue
каталог. Как только слушатель закончит обработку электронного письма, он перейдет к перемещению электронного письма в другой каталог. Однако перемещение электронной почты невозможно из-за блокировки файла процессом. inetinfo.exe
. Я заметил, что эта блокировка файла снимается через период времени, который колеблется от нескольких часов до нескольких дней. Вы можете видеть, что Queue
каталог может со временем довольно сильно заполниться.
Единственный способ обойти это - вручную остановить и запустить виртуальный SMTP-сервер в IIS.
Можно ли программно снять блокировку файла? Если нет, возможно ли ускорить снятие этой блокировки файла?
ОБНОВИТЬ
Слушатель наблюдает за Queue
папка для входящих писем, а затем их обрабатывает. Затем данные из электронных писем вставляются во внутреннюю нашу программу. После того, как слушатель закончит с электронным письмом, он перемещает электронное письмо в каталог с успешным или неудачным результатом.
Решено
Вернувшись к этой проблеме почти год спустя, я, наконец, смог ее решить! Решением было настроить локальный (по умолчанию) домен виртуального SMTP-сервера и установить для него соответствующий домен электронных писем, которые я хотел обработать. Это привело к тому, что электронные письма попали в Drop
папка, в которой ими можно было свободно управлять, не беспокоясь о блокировках процессов.
Каталог «Очередь» предназначен для внутреннего использования процессом SMTP-сервера. Вы обнаруживаете файлы, заблокированные там, потому что вы не должны работать с ними там. Если ваш каталог «Очередь» заполняется, вам лучше всего будет выяснить, почему доставка электронной почты не выполняется. Мне непонятно, старые ли Инструмент SMTPDiag от Microsoft может работать на Windows Server 2008, но это будет место для начала.
Обновить:
Мне неясно, что именно вы пытаетесь сделать со своей задачей обработки. Папка «Очередь» используется для хранения сообщений, ожидающих доставки. Сообщения, принятые для локальной доставки, хранятся в папке «Drop». Предполагая, что вы ищете сообщения, которые принимаются для локальной доставки, меня беспокоит, почему они зависают в «Очереди» и не попадают в «Drop». В «Очереди» не должно быть файлов, если что-то не работает правильно.
(Кстати: найти документацию, касающуюся службы SMTP в Windows Server 2008, оказалось довольно сложно. Служба SMTP всегда была чем-то вроде сироты, живя в преисподней между ОС Windows и Exchange.> Вздох < )
в реестре есть параметры для управления временем блокировки ...
но чтобы было проще ...
Просто перезапустите IIS (как запланированная задача каждые n минут), если вы используете IIS 7.0, сделайте это так ...
// stop iis and other web services
net stop WAS
//
( pause a few seconds, +30s )
>>> Do your processing... files should be released now...
// start iis and web services
net start W3SVC