-->

terça-feira, 24 de fevereiro de 2009

Como descobrir o tamanho máximo que um e-mail pode ter.

O procedimento abaixo foi testado no Windows 2000 SP4 e XP SP3.

Esse problema ocorreu comigo há algumas semanas. Um e-mail precisava ser enviado com anexo e não se sabia qual o tamanho máximo de anexo que podia passar pelos dois servidores (o do remetente e o do destinatário). Na ocasião eu tive que descobrir por tentativa e erro metade da resposta e pesquisa no Google para o resto.

Ontem eu descobri que poderia ter feito a pergunta diretamente aos servidores (às máquinas, não aos administradores).

Quando o servidor facilita

Por exemplo, para saber o tamanho máximo de e-mail que o meu servidor aceita abra um prompt do DOS e digite:

telnet ryan.com.br 25 [ENTER]

O meu servidor responderá com algo assim:

220-gator194.hostgator.com ESMTP Exim 4.69 #1 Tue, 24 Feb 2009 01:38:39 -0600
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.

E um cursor piscando. O servidor está esperando. Digite às cegas (sua digitação não vai aparecer):

EHLO [ENTER]

O servidor responde com:

250-gator194.hostgator.com Hello [189.70.54.187]
250-SIZE 52428800
250-PIPELINING
250-AUTH PLAIN LOGIN
250 HELP

A linha SIZE diz o tamanho máximo que cada mensagem pode ter, independente do tamanho da caixa postal. No exemplo, uns 52MB. Tenha em mente que o valor reportado é o valor total já com o overhead de 33% de que falo no meu post anterior. Para saber o tamanho máximo aproximado do total de anexos de uma mensagem, multiplique esse valor por 0,75. No caso, vai dar 39MB. Como a regra dos 33% não é perfeita mandar algo maior que 30MB pode ser uma loteria.

Entendendo como funciona

"telnet ryan.com.br 25" significa algo como "estabeleça uma conexão RAW (bruta) com ryan.com.br usando a porta 25". A porta 25, como vocês devem saber, é a porta padrão para entrada de e-mail do protocolo SMTP. Sistemas mais modernos, e o exemplo mais conhecido deve ser o Gmail, usam também a porta 587 e outros usam a porta 465.

Os protocolos de e-mail (SMTP, POP) foram desenhados para serem usados por humanos, como se fosse uma "conversa" (em ASCII) com o servidor.

Para poder conversar com o servidor você precisa de um programa que estabeleça uma conexão TCP "bruta" (conecta e se limita a passar para o outro lado tudo o que você digitar e exibir as respostas) e telnet.exe é justamente esse tipo de programa.

Já "EHLO" é uma extensão do comando "HELO" (parece piada, mas é sério) que faz o servidor responder com uma lista de suas características. Uma delas é o tamanho máximo que cada mensagem pode ter.

Quando o servidor não facilita

O meu servidor associa diretamente qualquer tentativa de conexão à porta 25 com o serviço de e-mail, mas nem sempre a coisa é fácil assim. Muitas vezes você precisa saber exatamente qual o FQDN (host.dominio) do encarregado de manipular e-mail. No meu caso, é "mail.ryan.com.br", mas como você viu no exemplo, não foi necessário.

Se você tentar "telnet bol.com.br 25" vai dar um erro parecido com este:

421 Cannot connect to SMTP server 200.221.8.150 (200.221.8.150:25), connect error 10060

Você precisa saber qual o FQDN do servidor de e-mail do BOL, que geralmente é divulgado para seus usuários, mas se você não for usuário, ou tiver esquecido, pode chutar um dos nomes padrão:

mail.nome_do_domínio
smtp.nome_do_domínio
smtps.nome_do_domínio
mx.nome_do_domínio

Ou seguir o procedimento explicado aqui.



Se ao dar o comando:

EHLO [ENTER]

O servidor reclamar algo do tipo:

501 Syntax: EHLO hostname

Então faça do jeito que ele quer:

EHLO teste.com [ENTER]

O problema é que a sintaxe padrão dos comandos HELO e EHLO requer que você se "apresente", mas como você sempre pôde se apresentar como quisesse (isso não é verificado de maneira alguma), muitos servidores dispensam essa identificação. No lugar de "teste.com" você pode escrever BRADPIT que vai funcionar do mesmo jeito.

2 comentários:

  1. Só complementando, alguns servidores podem conferir o que é enviado nos comandos HELO/EHLO com o endereço associado ao IP (reverse DNS) e caso não sejam iguais, recusar o e-mail (há grandes chances de ser spam). Mas como o objetivo não é enviar um e-mail mas apenas ver as características do servidor, nesse caso não faz diferença o que é enviado como hostname.

    ResponderExcluir
  2. E quando o servidor usa o Trend Micro?
    Eu não consigo me comunicar pq ele lista meu IP na lista de RBL, sendo que não está. Dei uma lida na internet, e o meu ip é um dos muitos exemplos de falsos de falsos positivos, até conferi em outro provedor desse serviço e está tudo limpo por lá.

    Voltando, como que me comunico com o servidor nesse caso?

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.