|
Busca |
Sobre os servidores dedicados, pré-instalámos um servidor de e-mail qmail http://www.qmail.org Qmail tem os seguintes patchs:
O servidor de e-mail é um software que têm por objectivo aceitar os e-mails sobre o porto 25 via protocolo SMTP. Para saber como funciona o protocolo SMTP, eis o url do RFC http://www.ietf.org/rfc/rfc0821.txt. Eis um exemplo de comunicação em SMPT no porto 25 : $ telnet mx3.ovh.net 25 Resolution du mx3.ovh.net Trying 213.186.33.73... Connected to mx3.ovh.net. Escape character is ']'. 220 Welcome ! You are on server 8 called mx3.ovh.net, spam protected: www.spam-rbl.com ESMTP HELO ping.ovh.net On se presente 250 Welcome ! You are on server 8 called mx3.ovh.net, spam protected: www.spam-rbl.com MAIL FROM: On dit qui envoit l'email 250 ok RCPT TO: On dit vers qui on veut envoyer l'email 250 ok acceptation DATA 354 go ahead test le corps de l'email. habituellement il faut mettre les champs FROM, TO, SUBJECT . 250 ok 1065864990 qp 27338 QUIT on quitte 221 Welcome ! You are on server 8 called mx3.ovh.net, spam protected: www.spam-rbl.com Connection closed by foreign host. 2 comentários :
From: oles@ovh.net To: oles@ovh.net Subject: test test A função a mais simples do servidor de e-mail é o relay (reenvio) que consiste :
É um servidor SMTP que vai tratar de distribuir os e-mails para Internet. Os fornecedores de acesso propõem este género de servidores. Qualquer servidor SMTP também sabe distribuir os e-mails. A primeira etapa foi apresentada na secção "antes de começar". Isto consiste simplesmente em aceitar o e-mail. O problema fica complexo com a gestão do spam que será apresentado a seguir. É o processo qmail-smtp que trata desta função. O seu papel é de saber comunicar em SMTP e saber guardar o e-mail sob a forma de um ficheiro no disco rígido. A segunda etapa consiste em armazenar os e-mails nos discos esperando a terceira etapa. Para ver o estado do spool : # /var/qmail/bin/qmail-qstat queue messages in queue: 360 messages in queue but not yet preprocessed: 0 Isto quer dizer que há 360 e-mails que o servidor de e-mail enviou 1 vez mas visivelmente, que o destinatário não existe ou que o servidor MX do destinatário não funciona correctamente. Devemos assinalar que existe muitas vezes problemas de tempo de resposta do servidor relay quando há muitos e-mails no spool. O qmail fica muito lento com mais de 25000 e-mails no spool. Neste caso, a preparação do e-mail fica cada vez mais lenta e as "messages in queue but not yet preprocessed" aumentam. Para ver os e-mails: # /var/qmail/bin/qmail-qread | grep remote | grep -v done remote dr_adams@sm66.com remote 66-2434019-directway.com?amysummers@trailerr.trailblazernews.com remote 2245031-5-reply@msgbnc.tgtrewards.net remote response@sleekzine.com remote larhondabeirne@hushmail.com ... Porque estes e-mails estão aqui ? Estes e-mails podem estar aqui porque :
É qmail-send que trata da gestão da queue para todo qmail. O seu papel é de guardar os ficheiros que o qmail-smtp deixou e distribui-los. Ele tem a escolha entre utilizar uma distribuição local (no caso em que o destinatário se encontra sobre a maquina ela-mesmo, ou seja que o servidor é o servidor MX do e-mail e existe uma conta pop3/imap por exemplo sobre a maquina ou remote (distante ; ou seja revezar(reenviar) o e-mail para o destinatário do e-mail)). A terceira etapa consiste em enviar o e-mail ao destinatário. O e-mail é então pegado do spool para saber qual é o destinatário. Qmail procura os servidores MX do domínio e liga-se sobre o porte 25 para enviar o e-mail. Esta operação é a mesma que ao principio. Podemos ter vários MX num domínio com o mesmo peso ou um peso diferente. Neste caso, o servidor SMTP tenta num primeiro tempo ligar-se sobre o servidor MX com um peso mais fraco. Se 2 MX têm o mesmo peso então o que saiu primeiro no pedido DNS vai ser utilizado em primeiro. Ao nível dos erros, veja a secção erro. Cada operação de relay é guardada nos cabeçalhos do e-mail (header). Podemos ver aqui, de onde e por qual servidor de e-mail foi enviado o e-mail : Delivered-To: ovh.net-60gp@ovh.net Received: (qmail 15496 invoked by uid 505); 11 Oct 2003 09:22:30 -0000 Received: from unknown (HELO 200-102-028-198.fnsce7005.dsl.brasiltelecom.net.br) (200.102.28.198) by mx4.ovh.net with SMTP; 11 Oct 2003 09:22:28 -0000 A leitura faz-se de baixo para cima. Vemos que o e-mail foi enviado desde 200.102.28.198 que se ligou sobre mx4.ovh.net e que o e-mail chegou a conta 60gp@ovh.net. Ver os cabeçalhos forjados na secção spam. Para ver o funcionamento do seu servidor e-mail pode ver os logs. Por defeito só tem os logs da terceira etapa : # tail -f /var/log/qmail/current @400000003f87e06f3172d234 end msg 195408 @400000003f87e07005d90c24 delivery 3534821: deferral: Sorry,4_I_wasn't_able_to_establish_an_SMTP_connection._(#4.4.1)/ @400000003f87e07005d91fac status: local 0/15 remote 1/120 @400000003f87e0740c22b274 new msg 195408 @400000003f87e0740c22be2c info msg 195408: bytes 1580 from qp 30987 uid 503 @400000003f87e0740c7fb6f4 starting delivery 3534823: msg 195408 to local hfifi-geefnie.com-studio@hiffi-gefenie.com @400000003f87e0740c7fc694 status: local 1/15 remote 1/120 @400000003f87e0741c7b34d4 delivery 3534823: success: did_0+0+1/ @400000003f87e0741c7b4474 status: local 0/15 remote 1/120 @400000003f87e0741c7b485c end msg 195408 status: local 0/15 remote 1/120 quer que a distribuição spool->local (as contas pop3) qmail utiliza 0 ligação sobre 15 e sobre spool->remote (a terceira etapa) 1 sobre 120 Atenção : o ficheiro move-se ou seja, se ele atinge um certo tamanho, deveremos voltar a fazer tail para ter os logs. "Também pode utilizar o comando tail -f que reabre o ficheiro quando ele se move" Para gerir a função relay, tem que se gerir os ip dos utilizadores que podem utilizar esta função. Se permite a todos os ip que reenviem, num momento a sua maquina será utilizada como um servidor de relay para os spammers. Para gerir isto, tem um ficheiro que se chama /etc/tcp.smtp # cat /etc/tcp.smtp 127.0.0.:allow,RELAYCLIENT=" " :allow Isto quer dizer que : todos os e-mails que chegam dosIP 127.0.0.X são reenviados. todos os e-mails que chegam de outros ip são aceites unicamente se o destinatário estiver configurado sobre a maquina (ver o servidor MX). Pode então adicionar um IP á sua escolha (por exemplo se tem um ip fixo da sua empresa ou Ip fixo em adsl) e compilar tcp.smtp : # tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp As modificações feitas são assim implementadas no ficheiro /etc/tcp.smtp.cdb que é utilizado pelo servidor smtp. Não precisa de reiniciar o servidor smtp. O ficheiro é lido a cada ligação smtp. No caso dos fornecedores de acesso, as classes IP são postas em duro sobre os servidores smtp o que permite aos clientes do fornecedor de acesso, de utilizar automaticamente o servidor smtp de relay sem mais nenhuma configuração. A opção open-smtp consiste em utilizar o servidor de pop3/imap para identifica-lo sobre o servidor pop3. O facto de utilizar login e password permite-lhe estar seguro que se trata de uma pessoa de confiança e então permitir-lhe fazer o relay. Durante a operação de pop3/imap o servidor pop3 grava o IP de ligação, actualiza-lo em /etc/tcp.smtp e compila /etc/tcp.smtp.cdb. # cd /etc/vpopmail/
-rw-r-r- 1 vpopmail vchkpw 25 fév 24 2003 inc_deps -rw-r-r- 1 vpopmail vchkpw 32 fév 24 2003 lib_deps -rw-r-r- 1 root root 700229 oct 11 13:22 open-smtp -rw-r-r- 1 root root 0 oct 11 13:22 open-smtp.lock Todos os IP temporários são armazenados em open-smtp : # head -n 5 open-smtp 213.41.188.249:allow,RELAYCLIENT=" ",RBLSMTPD=" " 1029581749 213.41.184.98:allow,RELAYCLIENT=" ",RBLSMTPD=" " 1029782162 213.41.184.135:allow,RELAYCLIENT=" ",RBLSMTPD=" " 1029880909 213.41.186.107:allow,RELAYCLIENT=" ",RBLSMTPD=" " 1029960881 213.41.186.122:allow,RELAYCLIENT=" ",RBLSMTPD=" " 1030146813 O último número é a hora em segundos desde 1970 e permite saber quando o IP utilizou o pop3/imap pela utiltima vez. E então isto permite a outro script /home/vpopmail/bin/clearopensmtp de ver todos os IP mais antigos que 3 horas e de os tirar do /etc/tcp.smtp. Atenção : o utilizador deve estar bem indicado e então pôr 40 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 >/dev/null e não 40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 >/dev/null A proposito, neste caso, vemos que sobre esta maquina o ficheiro open-smtp é particularmente grande. # wc -l open-smtp 11859 open-smtp 11859 IP é muito. É devido ao facto que não ha utilizador indicado no crontab. Corrigimos o erro em crontab e executamos clearopensmtp. # ls -l open-smtp
-rw-r--r-- 1 root root 700229 oct 11 13:29 open-smtp
Démarrage de crond : OK
+ /etc/crontab Sat Oct 11 13:31:24 2003 42 4 1 * * root run-parts /etc/cron.monthly
+40 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 >/dev/null Assim está melhor. As permissões do open-smtp também mudaram. Não é grave. Se têm o servidor pop3/imap muito carregado com mais de 3000-4000 ligações/hora, aconselhamos-lhe de utilizar o patch osd (Open-Smtp-Dir) que se pode encontrar em ftp://ftp.ovh.net/made-in-ovh/vpopmail. Este patch foi realizado pela OVH e consiste em não utilizar o ficheiro open-smtp com o sistema de lock (bloqueio do IP). Se muitas pessoas se ligam sobre o servidor pop3/imap têm de esperar cada uma a sua vez para ter acesso ao ficheiro para gravar o IP, o que abranda o servidor. Em vez de isso, tivemos a ideia de utilizar um directorio com as gravações dos ficheiros com o nome do IP e um tamanho 0. A cada nova ligação, actualizamos a data do ficheiro e um tmpwatch apaga os ficheiros mais velhos do que 3 horas. Outro script actualiza /etc/tcp.smtp cada segundos. Para evitar de utilizar pop3 antes de poder enviar os e-mails podemos patchar qmail com o patch smtp-auth. Este patch permite enviar via uma ligação smtp login e password de uma conta pop3 e então permitir o envio dos e-mails : # telnet localhost 25 ]'.Trying 127.0.0.1... Connected to localhost. Escape character is ' 220 Welcome ! You are on server 1 called mx1.ovh.net, spam protected: www.spam-rbl.com ESMTP EHLO ping.ovh.net 250-Welcome ! You are on server 1 called mx1.ovh.net, spam protected: www.spam-rbl.com 250-AUTH LOGIN CRAM-MD5 PLAIN 250-AUTH=LOGIN CRAM-MD5 PLAIN 250-PIPELINING 250-STARTTLS 250-8BITMIME 250 SIZE 10000000 AUTH LOGIN 334 VXNlcm5hbWU6 cG9zdG1gregreRlciVtbC5vdmgubmV0 334 UGFzc3dvcmQ6 errrob3Zo 235 ok, go ahead (#2.0.0) MAIL FROM: 250 ok RCPT TO: 250 ok DATA 354 go ahead truc . 250 ok 1065758232 qp 5296 QUIT 221 Welcome ! You are on server 1 called mx1.ovh.net, spam protected: www.spam-rbl.com Connection closed by foreign host. Vimos que em vez de HELO, enviamos EHLO o que permite utilizar os comandos evoluidos de ESMTP descritos em http://www.ietf.org/rfc/rfc2821.txt. O servidor responde a EHLO com todas as opções que aceita ou seja ; 250-AUTH=LOGIN CRAM-MD5 PLAIN 250-PIPELINING define o tipo de dialogo 250-STARTTLS ssl ou tls ou ligação encriptada 250-8BITMIME aceitação dos e-mails em 8bits e não 7bit como smtp 250 SIZE 10000000 o tamnho maximo do e-mail é de 10Mb O login e a password são enviados em base64. Não é preciso inverter as correntes enviadas para conhecer as minhas password, elas estão erradas. A instalação deste patch é complexo e necessita algumas astucias que estão aqui fora do assunto Agradecemos que não contacte o suporte para as ter, mas fale nisso na mailing-list. Também pode implementar os IP das maquinas destinatário em duro na configuração de qmail. Isto é muito util quando, por exemplo o servidor MX em frente não está acessível (como por exemplo caramail.com). Neste caso, podemos dizer ao servidor de utilizar um servidor smtp especial cujo papel é de reenviar os e-mails para caramail.com unicamente.
Assim, todos os e-mails para caramail vão ser redencaminhados para 213.186.33.9 que vai tratar, ele, da distribuição dos e-mails para caramail.com. Assim, evitamos de ter um spool de e-mail demasiados importantes e descarregamos as maquinas. Claro que 213.186.33.9 tem de aceitar os e-mails a partir do e-mail de onde reenviamos os e-mails mas confiamos no administrador para ter configurado como deve ser os servidores. Não é preciso reiniciar o servidor após uma modificação. É o process qmail-remote que trata de ligar os servidores sobre o porto 25 e reenviar os emails. Os e-mails, mais cedo ou mais tarde, devem chegar ao servidor MX de destino. Ou seja o que vai armazenar o e-mail esperando de ser consultado em servidor pop3 ou servidor imap. Neste caso, o servidor e-mail aceita o e-mail e faz exactamente a mesma coisa no caso de relay. E a terceira etapa que muda. Na terceira etapa, o processo qmail-sent detectou que o destinatário existe sobre a maquina. Recordamos que é o processo qmail-sent que trata aa segunda etapa de gerir o spool. Ele carrega então as listas de todos os dominios que se encontram sobre a maquina. Estas linhas estão em : -rw-r--r-- 1 root root 24546 oct 9 10:32 /var/qmail/users/assign Sobretudo NÃO modifique estes ficheiros a mão. Eles têm uma forma especial e ha sempre um ficheiro cdb que deve ser compilado. +00-00l0-00l00l-0-0.com-:00-00l0-00l00l-0-0.com:508:503:/home/vpopmail/domains/00-00l0-00l00l-0-0.com:- +00h01.com-:00h01.com:508:503:/home/vpopmail/domains/00h01.com:-
+01emarket.com-:01emarket.com:508:503:/home/vpopmail/domains/01emarket.com:-::E então, se o destinatario se encontra sobre a maquina, qmail-sent utiliza qmail-local para distribuir o e-mail que se encontra localmente para o directorio correcto. Dentro, devemos encontrar um ficheiro .qmial-default onde é o wpopmail que se encarrega da distribuição do e-mail com todo o sistema de reencaminhamentos, alias, mailing-lists, catch-all e contas pop3 com uma gestão de quota. Têm estas informações neste guia : VpopmailEAdministracao. Tamanho do ficheiro maximo # echo "10000000" > /var/qmail/control/databytes Todos os e-mails que têm o tamanho maior que 10Mb vão ser rejeitados. Tempo de vida de um e-mail no spool : # echo "846000" > /var/qmail/control/queuelifetime Se o e-mail fica no spool durante 10 dias e que ainda não foi reenviado então ele é devolvido com um erro duplo para a conta do postmaster da maquina, então o e-mail é retornado ao cabo de 5 dias. Refusar os e-mails um certo MAIL FROM : # echo "spammeur@spam" > /var/qmail/control/badmailfrom No momento do dialogo SMTP, o servidor smtp em frente comunica por MAIL FROM. Podemos recusar certos MAIL FROM o que evita a recepção de certos spam ou virus que têm um expeditor fixo. Atenção : não tem nada a ver com os campos From: To: Subject: do e-mail. Sorry,_I_wasn't_able_to_establish_an_SMTP_connection= Uma tentativa de envio para dr_adams@sm66.com. Interrogamos os servidores dns para conhecer o MX : ; <<>> DiG 9.2.1 <<>> sm66.com mx
;; Got answer:
;; QUESTION SECTION: ;sm66.com. IN MX ;; ANSWER SECTION: sm66.com. 86400 IN MX 10 mail.sm66.com.
|