Jump to content

SMTP Server


Cr4zYPT
 Share

Recommended Posts

Bons Dias,

Ja que consegui fazer um SMTP client. Desta vez quero fazer um servidor. Ja passei os olhos na descrição do SMTP mas nao encontro nada, nem no google sobre como funciona.

Tenho a ideia que quando um mail esta programado para ser enviado o servidor SMTP ligação ao destino (ex: gmail.com) e passa o mail para a respectiva conta destinada. Mas nao sei como funciona com detalhes.

Dava jeito ajuda.

Cumpz,

Link to comment
Share on other sites

A transmissão dos mails entre servidores SMTP é feita com o protocolo SMTP, normalmente adicionando um header à mensagem que permite identificar os servidores SMTP por onde a mensagem passou.

A passagem do SMTP para uma conta/caixa de correio é um processo que apenas depende da forma como pretenderes implementar. Pode ser única e exclusivamente uma escrita de dados em disco, não existindo um protocolo.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

Pah, como eu disse, não é obrigatório que exista um protocolo para essa transacção. O servidor SMTP pode ter as funções para simplesmente gravar a mensagem em disco, ou comunicar com um interface proprietário que trata de efectuar essas operações.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other sites

http://hanez.org/howto-telnet-smtp.html

Um exemplo (censurado) na minha maquina. As linhas assinaladas foram escritas por mim no teclado; as outras sao a resposta do servidor

$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 ---------- ESMTP Sendmail 8.14.4/8.14.4/Debian-2; Mon, 5 Mar 2012 19:00:01 GMT; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
helo localhost
250 ---------- Hello localhost [127.0.0.1], pleased to meet you
mail from: root@localhost
250 2.1.0 root@localhost... Sender ok
rcpt to: root@localhost
250 2.1.5 root@localhost... Recipient ok
data
354 Enter mail, end with "." on a line by itself
bla bla bvla

.
250 2.0.0 q25J013I031925 Message accepted for delivery
quit
221 2.0.0 ---------- closing connection
Connection closed by foreign host.

E o mail que eu recebi, com os headers todos (censurados)

From root@----------  Mon Mar  5 19:02:08 2012
Return-Path: <root@---------->
Received: from localhost (localhost [127.0.0.1])
        by -------- (8.14.4/8.14.4/Debian-2) with SMTP id q25J013I031925
        for root@localhost; Mon, 5 Mar 2012 19:01:56 GMT
Date: Mon, 5 Mar 2012 19:01:56 GMT
From: root <root@-------->
Message-Id: <201203051901.q25J013I031925@-------->
Status: RO
Content-Length: 13
Lines: 1

bla bla bvla

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Isso eu sei fazer tudo. Os comandos que tu envias-te seria o cliente.

Agora o eu queria fazer era o servidor com quem falas-te.

E queria saber como entregar "pessoalmente" esse mail ao destino. Como se fosse um mail server

Link to comment
Share on other sites

E queria saber como entregar "pessoalmente" esse mail ao destino. Como se fosse um mail server

http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol, na secção 'Mail processing model'. Basicamente usas o DNS para localizar o registo MX do domínio da conta de email (imagina 'xxx@gmail.com', tens de procurar o registo MX do domínio 'gmail.com'). Esse registo indica o IP do servidor a que tens de ligar para entregar o correio.

Mas olha que um servidor de STMP é muito mais complexo do que um cliente. Repara no Sendmail, que é um dos mais utilizados e é uma besta quase incompreensível.

Link to comment
Share on other sites

Ah! Ha muitos "servicos" necessarios para transmitir um mail de um utilizador para outro

Resumo de http://en.wikipedia.org/wiki/Email#Operation_overview

1) Mail User Agent do enviante :: para escrever a mensagem e fornecer-lhe um "header"

2) Mail Submission Agent :: para enviar a mensagem para fora do computador

3) Domain Name System client (e servidor) :: para averiguar enderecos IP finais

4) Message Transfer Agents :: para entregar a mensagem no sitio final antes do computador final

5) Message Delivery Agent :: para passar a mensagem para o computador do destinatario

6) Finalmente o Mail User Agent do destinatario :: para ler a mensagem

E uma "danca" bonita de se contemplar :-)

O que tu queres, aparentemente, é o passo 4.

Nota que podes guardar a mensagem num ficheiro de disco (é o que fazem a maior parte dos servidores), numa base de dados, ...

Para guardar a mensagem nada mais facil que abrir um ficheiro em modo de "append" e pespega-la no fim.

What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Link to comment
Share on other sites

Parece que não é assim tão simples quanto isso.

O que eu estava a fazer era ligar me o servidor smtp do mail em questão e enviar.

Basicamente vou dizer o que eu quero.

A minha mãe quer fazer publicidade ao que vende. Anteriormente ela usava um serviço de envio de email próprio constantcontact mas por razoes financeiras os bosses decidiram que não valia apena. Portanto achei um bom desafio fazer eu um programa.

Acontece que a lista de email é grande cerca de 10k de mails. E ja é para ai a 3ª vez que bloqueavam a conta que usavamos.

Portanto, alguem boas sugestões de como contornar o problema?

PS: Antes que começem ai com reclamações não e SPAM porque subscreveram-se na conta e quando eu envio mail meto no fundo o lnik de cancelar...

Dava jeito ajuda....

CUmpz,

Link to comment
Share on other sites

Acontece que a lista de email é grande cerca de 10k de mails. E ja é para ai a 3ª vez que bloqueavam a conta que usavamos.

Esse é o teu principal problema e não tem uma solução técnica. O problema é que te ligas à Internet através dum Internet Service Provider (ISP), que precisamente por causa do SPAM provalvelmente tem filtros aplicados para evitar que o seu servidor SMTP faça 'relay' de grandes volumes de correio de um utilizador. Se enviares 100 emails por dia, tudo bem, mas envia 10K e o alarme dispara.

Para esse volume de correio e se é para enviar rapidamente, provavelmente o melhor será alugar um servidor dedicado num serviço de alojamento e meter lá a correr um programa para enviar correio em 'bulk'. Como os serviços de alojamento ligam aos 'backbones' da Internet não deverás ter problemas no envio, mas convém antes perguntares-lhes se isso não viola os termos de serviço.

Fazeres programas para isto só se fôr um 'script' numa qualquer linguagem interpretada para enviar o mesmo mail para múltiplos destinatários. Mas mesmo para isso deves encontrar dezenas de 'scripts' de 'bulk emailing' numa pesquisa do Google.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.