Existem muitos garfos de daemon smtpd?

3

Tenho muitos garfos de smtpd na minha lista de processos no meu servidor da web. O que isso significa?

Minha caixa de correio está cheia?

   postfix   2662  0.0  0.9 106336  4856 ?        S    17:37   0:00 smtpd -n 
   smtp -t inet -u -c -o stress yes
   postfix   2800  0.0  0.9 106336  4860 ?        S    15:59   0:00 smtpd -n 
   smtp -t inet -u -c -o stress yes
   postfix   3644  0.0  0.9 106336  4864 ?        S    13:47   0:00 smtpd -n 
   smtp -t inet -u -c -o stress 
   postfix   3732  0.0  0.9 106336  4872 ?        S    14:36   0:00 smtpd -n 
   smtp -t inet -u -c -o stress yes
   postfix   3835  0.0  0.9 106336  4868 ?        S    14:36   0:00 smtpd -n 
   smtp -t inet -u -c -o stress yes
   postfix   4309  0.0  0.9 106336  4864 ?        S    13:48   0:00 smtpd 
   -n smtp -t inet -u -c -o stress 
   postfix   4603  0.0  0.9 106336  4860 ?        S    16:13   0:00 smtpd -n 
   smtp -t inet -u -c -o stress yes
   postfix   4843  0.0  0.9 106336  4864 ?        S    13:49   0:00 smtpd -n 
   smtp -t inet -u -c -o stress 

Eu tenho muito mais dessas linhas na minha lista de processos. Saída de pstree me dá:

 ├─master─┬─anvil
 │        ├─cleanup
 │        ├─pickup
 │        ├─proxymap
 │        ├─qmgr
 │        └─100*[smtpd]

Edit: Recentemente mudei o mysql para ouvir do localhost para o meu ip externo. Agora estou recebendo este erro no log de email:

warning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on   
'127.0.0.1' (111)
May 21 22:23:00 postfix/trivial-rewrite[15741]: fatal: mysql:/etc/postfix/mysql-   
virtual_mailbox_domains.cf(0,lock|fold_fix): table lookup problem
May 21 22:23:01  postfix/smtpd[31036]: warning: problem talking to service rewrite:    
Success
May 21 22:23:01  postfix/smtpd[30757]: warning: problem talking to service 
rewrite:     
Connection reset by peer

Está inundando meu registro e já é > 600MB. Como posso alterar o postfix para ouvir meu ip externo? Eu preciso me conectar ao mysql do meu local de origem e não do localhost?

    
por Bytemain 21.05.2012 / 20:44

2 respostas

4

O smtpd é executado pelo Postfix para tratar de mensagens recebidas (localmente ou remotamente). Se você tem 100 em execução de cada vez, sugiro que seu servidor esteja manipulando muitos e-mails. Se você não acredita que está gerando muito e-mail, é possível que seu servidor esteja recebendo muitos e-mails ou esteja enviando muitos e-mails dos quais você não está ciente.

O limite padrão para o número de processos smtpd é 100, que você parece estar atingindo o tempo todo.

Verifique os lotes do postfix para descobrir o que está fazendo.

Se estas são conexões legítimas, mas você quer menos delas, você pode usar

/etc/postfix/main.cf:
    default_process_limit = 10

para alterar o limite.

Sua atualização mostra que o problema está relacionado a conexões com o MySQL. Assim como a outra resposta, você poderia simplesmente consertar o MySQL para ouvir tanto no 127.0.0.1 quanto no endereço IP externo. Seria incomum interromper a escuta do MySQL em conexões locais.

Para o MySQL, eu configuraria o endereço de bind como 0.0.0.0, o que o obrigaria a escutar em todas as interfaces, ou apenas comentaria a seção bind-address no arquivo de configuração (que atinge a mesma coisa).

    
por 21.05.2012 / 23:46
4

O erro que você citou no log de erros indica que o Postfix não consegue se conectar ao servidor MySQL no 127.0.0.1. Isto é porque você disse ao servidor MySQL para não escutar em 127.0.0.1. A alta contagem de processos provavelmente se deve a repetidas tentativas fracassadas de consultar o MySQL para pesquisas de caixa de correio virtual.

Você precisa dizer ao Postfix para tentar se conectar ao servidor MySQL usando o endereço que o MySQL está realmente escutando. Se o seu arquivo /etc/hosts tiver uma entrada por nome de host, use-o. Caso contrário, use o endereço IP que você configurou para o MySQL escutar.

Supondo que você tenha alias_maps = mysql:/etc/postfix/mysql-aliases.cf no arquivo main.cf do Postfix, basta atualizar /etc/postfix/mysql-aliases.cf para dizer algo assim:

hosts = a.b.c.d

Onde a.b.c.d é o endereço que você configurou para o MySQL escutar.

    
por 22.05.2012 / 00:52