Evitando problemas no servidor SMTP para quem usa sendmail
Opa, lá venho eu aqui novamente falando sobre servidor de e-email.
É que estou configurando um grande servidor de e-mail com mais
de 10 mil contas e o lance tem que funcionar direito.
Ao longo do tempo tive alguns problemas de timeout no servidor
quando se tentava mandar mensagens. Os dois principais problemas foram:
O diretório de envio de e-mail, no meu caso o /var/spool/mquee, não pode ter muitos arquivos, não parei para calcular mas estava deixando a fila muito grande, acontecia de demorar um pouco para a mensagem ser enviada. A SOLUÇÃO: Coloque um timeout para as mensagens que não saíram do seu servidor sejam eliminadas. verifique as diretivas de timeout no sendmail.cf
Esse é um problema muito sério, um usuário que recebe e-mail o tempo todo, e que sua conta esteja muito grande. Eu tinha um usuário no meu server que era ele quem recebia todo e-mail de retorno de uma newsletter, a conta dele chegou a 400MB e como ele recebia e-mail válido o tempo todo, o servidor abria esse arquivo enorme toda hora fazendo com que o SMTP travasse por causa do procmail que estava ocupado tentando abrir o arquivo.
Soluções
a - Uma máquina parruda (hahaha) ou se você tem um server com baixa capacidade use um sistema de quota para que as contas de e-mail não fiquem muito grande.
b - Verifique se você tem um usuário como o meu acima e tente eliminá-lo.
c - Use sempre sistemas de antispam e antivírus. Seria interessante não se usar os sistemas padrões de aviso informando ao e-mail a ocorrência de um vírus ou SPAM, isso gera MUITO tráfego no servidor.
d - Se seu server atende somente sua empresa, aconselhe seus usuários a não deixarem cópias de mensagem dentro do server isso vai virando uma bola de neve e quando você for ver, a conta do usuário já está em 100MB.
[1] Comentário enviado por fabio em 21/11/2004 - 09:42h
Olá João! Queria discutir sobre alternativas às suas soluções, acho que isso pode adicionar um pouco à dica também. Essas são soluções que implementei num provedor com 15 mil caixas e fluxo de 800 mil e-mails por dia.
1. Sobre o lance de apagar as mensagens que ficam na fila de espera por não terem sido entregues: pode ser que o servidor de e-mail do destinatário esteja fora do ar e volte daqui a algumas horas ou até mesmo alguns dias. Se apagar a mensagem, pode ser uma mensagem importante sendo descartada. O ideal é marcar pra exclusão somente as mensagens de "delivery error" e não de erro temporário de entrega.
Uso Exim, mas acredito que no sendmail exista esse recurso. O que você pode fazer pra contornar a fila grande é configurá-lo pra usar "splitdir", ou seja, dentro de /var/spool/mquee ele cria dezenas de sub-diretórios. O problema no servidor de e-mail não é a quantidade de arquivos e sim uma "deficiência" do sistema de arquivos EXT2/3, que fica lento de ser lido quando há um número exagerado de arquivos num mesmo diretório. O melhor sistema de arquivos nesse caso é o XFS, do Solaris. Sendo assim os sub-diretórios acabam com o problema de milhares de arquivos num mesmo dir.
Com relação à caixas postais grandes, como uma de 400M, pode ser que um provedor queira oferecer mailboxes sem quota, isso serve como diferencial da empresa, ou até mesmo a diretoria que gosta de deixar tudo no servidor, enfim, cada caso é um caso. O que detona o load do servidor é o fato de ter de abrir um arquivo de 400MB de uma só vez, isso é fogo. A solução pra isso é converter suas mailboxes do formato MBOX (arquivo único) para o formato maildir. O formato maildir é basicamente um conjunto de 3 diretórios para cada caixa postal. Dentro desses diretórios você tem as mensagens, sendo que cada mensagem é um arquivo separado. Assim o procmail ou seja lá quem for não precisa tratar arquivos de 400MB e sim arquivos individuais, que no geral não passam de 200/300kb. O conjunto de todos os arquivos do usuário vão formar os 400M, mas isso será um mero detalhe. hehehe
[2] Comentário enviado por jpfaria em 22/11/2004 - 10:55h
Opa fábio,
Ainda não estudei a fundo esses recursos que você falou.. tb não sei se é possível sendmail, mas de qualquer forma, foi de grande ajuda sim e seus comentários sempre serão bem vindos.
[4] Comentário enviado por jukabala em 20/03/2005 - 15:33h
Olá gente,,, aproveitando o assunto,,, voces podem me ajudar??? tenho um servidor slackware 10.1, com apache e sendmail,,, tenho 8 clientes virtuais com suas respectivas contas de e-mail,,, o problema é que não consigo mandar e-mail via smtp, só consigo receber via pop3, acho que é alguma configuração do sendmail.cf,,, isso acontece usando o outlook express,,,, se usar o uebimiau, funciona tudo , o que pode estar acontecendo?