Evitando problemas no servidor SMTP para quem usa sendmail

Publicado por João Paulo de Oliveira Faria em 21/11/2004

[ Hits: 12.109 ]

Blog: http://www.jpfaria.com

 


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.

Aos poucos vou colocando mais dicas.

[]'s

Outras dicas deste autor

Problema em instalação com HD SCSI

Desativando a proteção de tela automática do console

Criando um usuário root sem ser o root

Problema com fuso horário no Sendmail

Retirando o poder de root do bind no Slackware

Leitura recomendada

Thunderbird - Erro: Data errada de recebimento de e-mail [Resolvido]

SpamAssassin - Melhorando a eficácia do seu anti-spam

Thunderbird - Usando a mesma caixa de entrada no Windows e no Linux

Postfix - Efetuando relay em hosts que exigem autenticação e nas portas SUBMISSION ou SMTPS

Liberação de portas para e-mail

  

Comentários
[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

Bom, espero ter contribuído com alguma coisa :)

[]'s

[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.

[]'s

[3] Comentário enviado por neriberto em 24/11/2004 - 13:23h

Realmente tudo isto acima é muito interessante, são detalhes que fazem a diferença.

[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?

me audem,,, Juarez



Contribuir com comentário