IIS / SMTP - não é possível mover emails de inetpub / mailroot / Queue devido ao bloqueio de arquivos

2

Eu tenho um ouvinte que processa emails no diretório inetpub/mailroot/Queue . Depois que o ouvinte terminar de processar um email, ele moverá o email para outro diretório. No entanto, mover o email não é possível devido a um bloqueio de arquivo pelo processo inetinfo.exe . Eu notei que esse bloqueio de arquivo é liberado após um período que varia de várias horas a vários dias. Você pode ver que o diretório Queue pode ficar bastante cheio com o tempo.

A única maneira que consegui resolver isso é parando e iniciando manualmente o meu servidor virtual SMTP no IIS.

É possível liberar esse bloqueio de arquivo programaticamente? Se não, é possível agilizar a liberação desse bloqueio de arquivo?

UPDATE

O ouvinte monitora a pasta Queue dos emails recebidos e os processa. Os dados dos e-mails são então inseridos em um programa interno nosso. Depois que o ouvinte é feito com o email, ele move o email para um diretório de sucesso ou falha em outro lugar.

RESOLVIDO

Depois de voltar a este problema quase um ano depois, finalmente pude resolvê-lo! A solução era configurar o domínio local (padrão) do Servidor Virtual SMTP e defini-lo para o domínio apropriado dos e-mails que eu queria processar. Isso fazia com que os e-mails entrassem na pasta Drop , onde podiam ser manipulados livremente sem precisar se preocupar com bloqueios de processos.

    
por Bryan Roth 30.05.2012 / 18:25

2 respostas

2

O diretório "Fila" é destinado ao uso interno pelo processo do servidor SMTP. Você está encontrando arquivos trancados lá porque você não deveria estar trabalhando com eles lá. Se o seu diretório "Fila" estiver sendo preenchido, você será melhor servido para descobrir por que as entregas de e-mail estão falhando. Não ficou claro se a antiga ferramenta SMTPDiag da Microsoft pode funcionar no Windows Server 2008, mas seria um lugar para começar.

Atualização:

Não está claro para mim exatamente o que você está tentando fazer com sua tarefa de processamento. A pasta "Fila" é usada para reter mensagens com entrega pendente. As mensagens aceitas para entrega local são armazenadas na pasta "Soltar". Supondo que você esteja procurando por mensagens que estão sendo aceitas para entrega local, eu ficaria preocupado com o motivo de eles estarem saindo em "Fila" e não acabarem em "Lançar". Não deve haver arquivos acumulados em "Fila", a menos que algo não esteja funcionando corretamente.

(Como um aparte: Encontrando documentação sobre: o Serviço SMTP no Windows Server 2008 está se tornando bastante difícil. O Serviço SMTP sempre foi um pouco órfão, vivendo em um submundo entre o sistema operacional Windows e o Exchange. > suspiro <)

    
por 11.07.2012 / 19:07
0

existem alguns parâmetros no registro para controlar os tempos de bloqueio ...

mas para facilitar ...

Reinicie o IIS (como uma tarefa agendada a cada 'n' minutos), se você estiver usando o IIS 7.0, faça assim ...

// 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
    
por 11.07.2012 / 19:23