documento em elaboração, contém erros, nos proximos dias faço a correção e removo este aviso
Tutorial (howto) como montar um servidor de e-mail para uso interno, configuração passo a paso, com teste de funcionamento de cada serviço, para uso domestico ou em empresas com hospedagem externa, neste tutorial tem a configuração para baixar as mensagens para um servidor interno e aplicar mais regras no recebimento e envio de mensagens.
Ambiente; utilizado uma maquina da rede sem restrição no firewall, neste ambiente tem outra maquina fazendo NAT e rodando o proxy, segue um resumo do firewal que libera a maquina (servidor de e-mail) com IP 192.168.1.53;
modprobe iptable_nat /usr/sbin/iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.53/32 -p tcp -m multiport --dport 80,443 -j ACCEPT /usr/sbin/iptables -t nat -A PREROUTING -p tcp -m multiport -s 192.168.1.0/24 --dport 80,443 -j REDIRECT --to-ports 3128 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward
Estação com SUSE 10.1 instalado com perfil estação de trabalho KDE, navegando sem restrição de firewall, utilizando smart como gerenciador de pacotes, com outro gerenciador precisa ajustar a linha de comando, veja no menu quais os serviços já estão configurados e se tem alguma observação sobre o serviço.
Nesta configuração inclue a configuração e testes de funcionamento do Postfix, fetchmail, SASL e outros serviços que fazem parte de um servidor de e-mail
Na maquina local o root (adminstrador da maquina), tem acesso às mensagens de todos, ótimo pra backup, também é um grande problema, ler estas mensagens é crime conforme definido na lei brasileira, crime por violação de correspondencia.
Dependendo do ambiente e da empresa isto poderá ter varias consequencias que não cabe discutir neste tópico, pense em elaborar uma comunicação pra informar que o e-mail é correspondencia da empresa e que é proibido o uso de e-mail pessoal na empresa, que será auditado periodicamente e outros avisos que achar necessário, mantenha uma copia assinada como protocolo de entrega da comunicação, consulte este FAQ.
http://www.zago.eti.br/email/normas-internas.txt
Instalar, configurar e testar o servidor de e-mail (postfix-2.2.9-10@i586).
Instalar pacote Postfix e mailx para testar o recebimento de mensagens.
smart install postfix mailx -y chkconfig postfix on df | mail zago -s 'uso do disco - via mailx!' cat /var/spool/mail/zago
Prontinho, explicando o teste.
As duas ultimas linhas servem para testar o envio de mensagens, altere o usuário para um usuário valido no seu sistema, pode ser qualquer usuário comum cadastrado nesta maquina, exemplo para o usuário root enviar e-mail para zago informando o espaço em disco:
df | mail zago -s 'uso do disco - via mailx!'
Não ocorrendo erro no envio da mensagem, então confera se está tudo OK, se o e-mail chegou, execute no shell do próprio servidor;
cat /var/spool/mail/zago
Retorna o e-mail no console, no corpo da mensagem consegue ler o resultado do comando df que foi enviado por e-mail, veja o que retornou na minha instalação;
os741sx:~ # df | mail zago -s 'uso do disco - via mailx!' os741sx:~ # cat /var/spool/mail/zago From root@os741sx.www.zago.eti.br Sun May 7 01:01:05 2006 Return-Path: <root@os741sx.www.zago.eti.br> X-Original-To: zago Delivered-To: zago@os741sx.www.zago.eti.br Received: by os741sx.www.zago.eti.br (Postfix, from userid 0) id D297E1BEBD; Sun, 7 May 2006 01:01:05 -0300 (BRT) Date: Sun, 07 May 2006 01:01:05 -0300 To: zago@os741sx.www.zago.eti.br Subject: uso do disco - via mailx! User-Agent: nail 11.25 7/29/05 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <20060507040105.D297E1BEBD@os741sx.www.zago.eti.br> From: root@os741sx.www.zago.eti.br (root) Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda3 32916172 9003320 23912852 28% / udev 502036 132 501904 1% /dev
registro no log.
tail -f /var/log/messages May 7 01:01:05 os741sx postfix/pickup[15216]: D297E1BEBD: uid=0 from=<root> May 7 01:01:05 os741sx postfix/cleanup[15260]: D297E1BEBD: message-id=<20060507040105.D297E1BEBD@os741sx.www.zago.eti.br> May 7 01:01:05 os741sx postfix/qmgr[15217]: D297E1BEBD: from=<root@os741sx.www.zago.eti.br>, size=654, nrcpt=1 (queue active) May 7 01:01:06 os741sx postfix/local[15262]: D297E1BEBD: to=<zago@os741sx.www.zago.eti.br>, orig_to=<zago>, relay=local, delay=1, status=sent (delivered to mailbox) May 7 01:01:06 os741sx postfix/qmgr[15217]: D297E1BEBD: removed
Na instalação já pega o nome da maquina (dominio), cat /etc/hosts
os741sx:~ # cat /etc/hosts 127.0.0.1 localhost 127.0.0.2 os741sx.www.zago.eti.br os741sx
Diminua os problemas, na instalação informe em dominio, o mesmo dominio do servidor de e-mail externo, o mesmo que vai usar para autenticar (fazer relay), ou altere agora via yast.
Yast -> Dispositivos de Rede -> Placa de Rede -> procure pela opção de alterar o dominio.
As configurações do postfix ficam no arquivo /etc/postfix/main.cf
, outros serviços chamado pelo postfix tem seus próprios arquivos de configuração, como exemplo o SASL para fazer relay, existem diversas maneiras de fazer alterações nestes arquivos de configuração, tem ferramentas em ambiente gráfico, pode editar diretamente com seu editor preferido, ou se preferir pode fazer a copia de outra instalação, ou desta configuração que está disponivel em http://www.zago.eti.br/modelos/suse101-postfix.txt, mesmo fazendo a copia deste, precisa fazer algumas alterações para adequar a sua rede, precisa alterar no mínimo as seguintes diretivas:
myhostname = servmail.zago.eti.br mydomain = zago.eti.br relayhost = smtp.zago.eti.br mynetworks = 192.168.1.0/24, 127.0.0.0/8
Use seu editor preferido para alterar no main.cf as diretivas acima, ou use o "sed" para aplicar as alterações, exemplo de formato da linha de comando com sed:
sed -i "s/stringoriginal/stringtroca/g" arquivo
Com "sed" não precisa editar o main.cf, mesmo assim precisa usar um editor de texto para ajustar a linha de comando para depois colar no console, depois de alterar os dados acima, execute estas linhas de comando;
rcpostfix restart df | mail zago -s 'uso do disco - via mailx!' cat /var/spool/mail/zago
Onde; no seu arquivo de configuração as diretivas;
myhostname = servmail.zago.eti.br, deve ser igual a /etc/hosts, neste exemplo ficaria com aula.intranet.net
mydomain = zago.eti.br, deve ser igual a /etc/hosts, neste exemplo ficaria com intranet.net
relayhost = smtp.zago.eti.br, deve ser o dominio onde vai autenticar as mensagens, seu servidor de e-mail externo, provedor que hospeda seu dominio.
mynetworks = 192.168.1.0/24, 127.0.0.0/8, deve colocar sua rede, caso a classe seja diferente, altere 192.168.1. para a sua rede.
nas linhas que inciam com df e cat, zago é um usuário válido na maquina, use em lugar de zago um usuário da sua maquina .
Quando OK, o envio do primeiro e-mail cria automaticamente o arquivo com o nome do usuário e salva a mensagem dentro dele, o comando cat exibe o fonte do e-mail no terminal.
Quando falhar, deve revisar toda a configuração, fazer novos testes, procurar e interpretar a mensagem de erro, consultar os logs e outras verificações do sistema.
Passe para o próximo tópico somente depois que o comando cat /var/spool/mail/<usuario>
exibir no terminal a mensagem enviada pelo root informando o espaço em disco.
Alterando manualmente, mesmo que tenha utilizado o recurso acima sempre é bom seguir os proximos passos pra conferir.....
Arquivo de configuração do Postfix, fica em: /etc/postfix/main.cf
Precisa ajustar algums parametros, entre eles estão o dominio e outros detalhes descritos abaixo, utilize ferramentas, edite a seu modo ou substitua o arquivo de configuração por outro previamente configurado ou de outra instalação.
Dica para comparar seu main.cf com o de outra instalação, como exemplo o deste tutorial.
cp /etc/postfix/main.cf /tmp/main.cf wget http://www.zago.eti.br/modelos/suse101-postfix.txt egrep -v "^#|^$" main.cf > /tmp/maincf-limpo egrep -v "^#|^$" suse101-postfix.txt > /tmp/maincfmodelo diff -y --suppress-common-lines /tmp/maincf-limpo /tmp/maincfmodelo | tr -d '\011' > /tmp/maindif less -Nis /tmp/maindif tecle q para sair
Faça (backup) copia do main.cf da instalação antes de qualquer alteração ou troca do original por outro, execute:
cp /etc/postfix/main.cf /etc/postfix/main.cf-original
Use seu editor preferido, caso queira usar o "vi" para importar este modelo de main.cf, execute dentro do do "vi" em modo comando:
:r !lynx -dump http://www.zago.eti.br/modelos/suse101-postfix.txt
Utilizo o processo acima mas pode baixar via wget, navegador, copiar e colar, editar via "mc", webmin ou seu editor preferido.
De qualquer forma, usando o original ou fazendo a copia do FAQ, precisa fazer alterações no /etc/postfix/main.cf, entre as alterações minimas necessárias estão o nome do dominio, host e provedor que fará relay (autenticar) além de outros itens que são peculiares a tua rede.
A seguir as alterações que deve aplicar no /etc/postfix/main.cf:
Com esta configuração basica pode testar o funcionamento do Postfix:
Iniciar o serviço somente para esta sessão:
rcpostfix start [root@localhost postfix]# service postfix start Iniciando postfix: [ OK ]
Iniciar o Postfix sempre junto com o boot execute:
chkconfig postfix on
Outros comandos e dicas:
Lista um resumo da configuração; postconf -n
Lista toda a configuração; postconf
Após qualquer alteração nas configurações do postfix, precisa recarregar a configuração com; rcpostfix reload
Caso precise parar, então use:
rcpostfix stop #inicial manualmente rcpostfix start
Retornando done é sinal que o postfix está rodando normalmente, para outros resultados deverá rever as configurações.
Ver se está rodando, execute:
rcpostfix status
LEMBRANDO que o dominio zago.eti.br e e-mail zago@zago.eti.br existem somente nesta maquina, eles não existem para o mundo, isto só funciona na rede interna, mesmo desconectado da internet as estações enviam e-mail para este servidor Postfix, serve unica e exclusivamente como e-mail interno.
Nesta rede tenho uma maquina de cara pra internet trabalhando como firewall e compartilhando a conexão pra rede interna, o servidor de e-mail está em outra maquina rodando também outros serviços, nesta rede existem diversas configurações de estações, tem estação com GNU/Linux e Windows, tem estações usando Evolution, Kmail, Outlouco e outras usando somente webmail ou FreeNX, tem estações que passam pelo firewall para acessar diretamente contas de e-mail externa e outras que tem acesso somente ao servidor interno, como pode ver, voce pode fazer o que quiser, a diferenças estão nas configurações do firewall que libera ou bloqueia o acesso externo, nos clientes depende da configuração da conta de e-mail, pode configurar duas contas, uma apontando para o IP do Postfix (e-mail interno), outra para o dominio em servidor externo, neste caso pode configurar contas no servidor interno ou não.
Acompanhar os logs em: /var/log/maillog tail -f /var/log/maillog
Neste exemplo retornou;
Apr 4 01:32:14 localhost sendmail[4457]: k344WELk004457: from=root, size=329, class=0, nrcpts=1, msgid=<200604040432.k344WELk004457@localhost.localdomain>, relay=root@localhost Apr 4 01:32:14 localhost sendmail[4458]: k344WERU004458: from=<root@localhost.localdomain>, size=633, class=0, nrcpts=1, msgid=<200604040432.k344WELk004457@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1] Apr 4 01:32:14 localhost sendmail[4457]: k344WELk004457: to=zago, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30329, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (k344WERU004458 Message accepted for delivery) Apr 4 01:32:14 localhost sendmail[4459]: k344WERU004458: to=<zago@localhost.localdomain>, ctladdr=<root@localhost.localdomain> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=local, pri=30869, dsn=2.0.0, stat=Sent
Postfix ouve na porta 25, depois de iniciado no resultado de:
netstat -na
Procure pela porta 25, veja este resultado parcial:
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN
Quando a porta 25 não aparece no resultado pode ser problemas com firewall, processo do postfix não foi iniciado ou outro problema qualquer com a rede ou configuração.
Ainda não completa a conexão por telnet na porta 25, por exemplo, ao tentar conexão via telnet a partir de outra maquina da rede com o comando telnet 192.168.1.53 25
, retorna este erro;
zago@suse64:~> telnet 192.168.1.53 25 Trying 192.168.1.53... telnet: connect to address 192.168.1.53: Connection refused
A configuração ainda não terminou, vamos para a configuração do IMAP que fará a entrega das mensagens ao clientes de e-mail da rede interna.
Minha colinha, resumo dos comandos que utilizo para copiar e colar.
smart install postfix mailx -y smart install dovecot -y mv /etc/postfix/main.cf /etc/postfix/main.cf-original cat /etc/hosts > /etc/postfix/main.cf vi /etc/postfix/main.cf #dentro do "vi": :r !lynx -dump http://www.zago.eti.br/modelos/suse101-postfix.txt rcpostfix reload chkconfig postfix on df | mail zago -s 'uso do disco - via mailx!' cat /var/spool/mail/zago
Este tópico está com falha na autenticação, cliente de e-mail não consegue conexão com o servidor, quando pronto removo este aviso.
Tem diversas opções no SUSE 10.1, pesquise (pop3) no gerenciador de pacotes
courier-imap - An IMAP and POP3 Server for Maildir MTAs dovecot - IMAP and POP3 Server Written Primarily with Security in Mind imap - IMAP4, POP2, and POP3 Mail Server
Acrescentando mais um serviço ao servidor de e-mail, instalar e testar o funcionanmento do IMAP com Postfix.
O Postfix é um servidor SMTP. Ele não tem nada de POP, portanto precisa de um servidor POP, existem diversos, precisa instalar um deles para fazer a interface do servidor com as estações da rede, os clientes de e-mail instalados nas estações de trabalho vão se comunicar com servidor POP para baixar as mensagens para a estação local.
Optei pelo (imap), já tem pacote da distro, veja o que retorna na pesquisa;
Description: This package contains IMAP4, POP2, and POP3 mail servers. . After installation, activate the servers in the file /etc/inetd.conf.
Observe no resultado acima, está errada a indicação de /etc/inetd.conf, o correto é /etc/xinetd.conf, que chama as configurações de /etc/xinetd.d/imap
"IMAP é um servidor para os protocolos de mail POP (Post Office Protocol) e IMAP. O protocolo POP permite uma máquina de correio coletar mail para usuários e permite o download do mail para a máquina local do usuário para leitura. O protocolo IMAP oferece a funcionalidade de POP, e permite um usuário ler seu mail em uma máquina remota sem movê-lo para a sua caixa postal local."
Instalar: smart install imap -y
Precisa habilitar o servidor pop3 em /etc/xinetd.d/imap
Edite o arquivo (/etc/xinetd.d/imap), procure pela parte igual no exemplo abaixo, altere a linha (disable = yes) para altere de yes para no como no exemplo abaixo, não altere mais nada, salvar e sair...
# imap - pop3 mail daemon # service pop3 { disable = no
Iniciar o serviço nesta seção: rcxinetd start
, quando Ok retorna;
os741sx:/etc/postfix # rcxinetd start Starting INET services. (xinetd) done
Iniciar o serviço junto com o boot da maquina: chkconfig imap on
Depois de iniciar o xinetd (imap ou servidor de pop3), quando Ok abre a porta 110, procure por ela nos resultados de netstat -na
, compare com resultado deste serviço parado e rodando, a difereça deve ser esta porta 110 a mais.
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
Testar o funcionamento do servidor pop.
Neste exemplo foi utilizado o kmail no SUSE 10, pode usar qualquer cliente de e-mail.
Executar kmail em outra maquina da rede interna, configurações do kmail para receber as mensagens:
Menu Configurações Configurar kmail identidades adicionar ## preencha os dados .... Onde conta de e-mail zago@intranet.net, claro que deve trocar para o seu usuário e nome da tua maquina. contas adicionar (selecione pop3) preencha neste formato: Nome: qualquer nome Login: o mesmo nome de login no servidor Senha: a mesma senha do usuário no servidor Máquina: 192.168.1.53 #IP do servidor de e-mail ou nome quando rodar DNS para as maquinas internas. porta: 110 Prontinho, Ok, aplicar e OK, pra receber as mensagens de teste que estão no servidor basta um clique em "Verificar Correio em", quando Ok e configurado com login e senha do mesmo usuário utilizado no teste com mailx, receberá no kmail aquela mensagem do teste de disco, quando falhar, confira os dados e tente interpretar a mensagem de erro. Confira o que consta no log "tail -f /var/log/maillog". Quando receber as mensagens deve registrar algo neste formato; Apr 4 02:43:17 localhost dovecot: pop3-login: Login: user=<zago>, method=PLAIN, rip=::ffff:192.168.1.43, lip=::ffff:192.168.1.53 Apr 4 02:43:17 localhost dovecot: pop3(zago): Logout. top=0/0, retr=1/ del=1/1, size=903 configurações do Kmail para enviar mensagens: Menu Configurações Configurar kmail contas Enviando Adicionar (selecione SMTP) preencha neste formato: Nome: qualquer nome Máquina: 192.168.1.53 #IP do servidor de e-mail ou nome quando rodar DNS para as maquinas internas. porta: 25 OK, aplicar e OK, em uma segunda instalação falhou, acho que errei ou esqueci algum detalhe.
Este servidor ainda não recebe nem envia e-mail para o mundo, mas o cliente de e-mail tem que enviar e receber internamente, isto funciona até com maquinas fora da internet.
Para testar, envie uma mensagem para outro usuário cadastrado no servidor, não tente enviar para o mundo porque ainda não está configurado o SASL para fazer relay no provedor externo, por enquanto está funcionamento somente entre contras de usuários cadastrados na maquina local.
Passe para o proximo tópico somente depois que funcionar o envio e recebimento de e-mail internamente, os proximos tópicos são configurações pra troca de e-mail com o mundo (servidor de e-mail externo - provedor)
Transferir mensagens do provedor externo para o servidor local, baixar mensagens.
Instale e cofigure o Fetchmail somente em servidores que não respondem pelo dominio, ele é indicado para quem utiliza hospedagem externa, quem não tem o MX redirecionado para o servidor interno, fetchmail faz um papel semelhante ao de um cliente de e-mail como Kmail ou Evolution, pega as mensagens no servidor externo e entrega ao Postfix local, faz somente isto, não envia e-mail nem é possível acessar e-mail por ele.
Portanto não utilize fetchmail quando tem o MX redirecionado para seu IP, neste caso o Postfix responde pelo dominio e recebe as mensagens diretamente, neste caso precisa configurar o DNS e outros serviços relacionados a comunicação com outros servidores na internet.
Utilize como ferramenta para transferir e-mail do provedor externo para seu servidor local.
smart install fetchmail -y
Configurando o Fetchmail
Apoveitando para lembrar do manual; man fetchmail
fetchmail - fetch mail from a POP, IMAP, ETRN, or ODMR-capable server
Webmin tem modulo de configuração do fetchmail.
Depois de instalado precisa configurar com dados das contas que deseja baixar mensagens para esta maquina.
Na instalação não cria um arquivo modelo de configuração, tem que criar e configurar manualmente, este arquivo tem que ficar no home do usuário que vai rodar o fetchmail, como vou utilizar varios usuários com contas em provedores diferentes, optei por colocar este arquivo no home do root e protejer o acesso deste arquivo, afinal.... tem senhas de e-mail, optei por esta condição para evitar que um usuário pegue a senha do outro.
Meu .fetchmailrc abaixo, baixar e-mail da conta zagolinux@uol.com.br e salvar em /var/spool/mail/zago:
set logfile "/var/log/fetchmaillog" set postmaster "nome do postmaster" set daemon 300 set bouncemail poll pop3.uol.com.br proto POP3 user zagolinux password minhasenha is zago here Outro exemplo para testes com e-mail do IG. set logfile "/var/log/fetchmaillog" set postmaster "nome do postmaster" set daemon 300 set bouncemail poll pop3.ig.com.br proto POP3 user zago_hard password minhasenha is zago here
Utilize seu editor preferido na criação do arquivo .fetchmailrc dentro do home do root, exemplo pelo "vi":
vi /root/.fetchmailrc
ou vá pro diretório do root:
cd ~ vi .fetchmailrc pressione insert pra entrar no modo inserção digite as linhas acima, ou copie as linhas acima e altere os dados necessários, depois pra salvar e sair, pressione ESC SHIFT+: wq
Depois de criar o arquivo, acerte a permissão e inicie o serviço, execute estas duas linhas abaixo e prontinho....
chmod 710 /root/.fetchmailrc fetchmail Veja a mensagem (aviso) é desencorajado rodar como root [root@localhost ~]# fetchmail fetchmail: WARNING: Running as root is discouraged.
Como iniciar fetchmail automaticamente no boot, pode fazer manualmetne em cada boot, automatizar de duas formas, acrescentar uma chamada no final de /etc/rc.d/rc.local ou no cron para executar periodicamente.
A opção "set daemon 300" indica para ser executado a cada 300 segundos, utilize somente em casos de iniciar manualmente, scripts ou pelo /etc/rc.d/rc.local, remova esta linha quando usar a opção do crontab.
Prefiro agendar no crontab, neste caso precisa retirar da configuração do fetchmail a linha:
set daemon 300
Acrescentar no cron (agendador de tarefas pra executar o fetchmail a cada 5 minutos, como root execute esta linha de comando:
crontab -e */5 * * * * /usr/bin/fetchmail -a
A primeira linha entra em modo de configuraçao do agendador de tarefas, a segunta linha agenda a executação do fetchmail a cada 5 minutos, para encerrar, pressione ESC :wq
O arquivo de log /var/log/fetchmaillog, será criado automaticamente na primeira execução do fetchmail, acompanhe os logs, execute:
tail -f /var/log/fetchmaillog
Não entendi como funciona a quebra de linha, a configuração para alguns provedores provoca quebra da linha de configuração e por consequencia a mensagem de erro do tipo:
[root@faqcl10 root]# fetchmail -a fetchmail:/root/.fetchmailrc:5: syntax error em is
Solução - edite o arquivo de configuração .fetchmailrc e verifique se não tem algum erro de digitação, se falta espaço na separação dos paramentros, evite a quebra de palavra, quando o final da linha quebrar a palavra, acrescente espaços antes da palavra que acusa no erro de modo que ela passe para a linha seguinte e depois executar novamente: fetchmail -a
Com esta configuração, mesmo estações sem acesso à internet podem acessar este servidor com qualquer cliente de e-mail ou webmail.
Somente os usuários cadastrados na maquina terão acesso, o administrador do servidor precisa incluir as contas no .fetchmail para baixar as mensagens do provedor externo para a maquina local, inclusive pode definir senhas diferente entre o provedor e maquina local.
Outros exemplos do arquivo de configuração do arquivo de configuração /root/.fetchmailrc
cat /root/.fetchmailrc set logfile "/var/log/fetchmaillog" set postmaster "nome do postmaster" set bouncemail poll pop3.ig.com.br proto POP3 user zago_hard password senhadoxxxx is zago here poll pop3.uol.com.br proto POP3 user antoniofzago password senhadoxxxx is zago here poll pop3.bra.terra.com.br with proto POP3 user zagoteste there with password senhadoxxxx is zago here user zagorede there with password senhadoxxxx is zago here #comando pra importar pro "vi" (veja cp.txt) # :r !lynx -dump http://www.zago.eti.br/modelos/fetchmailrc
Faça seus testes, quando receber mensagens do provedor as configurações estão OK, mas ainda não envia mensagens para o mundo, este é um serviço que requer configuração do SASL, assunto do proximo tópico.
Resumo de comandos para fetchmail.
smart install fetchmail -y vi /root/.fetchmailrc :r !lynx -dump http://www.zago.eti.br/modelos/fetchmailrc chmod 710 /root/.fetchmailrc fetchmail -a cat /var/spool/mail/zago tail -f /var/log/fetchmaillog
Fazer relay no provedor externo (autenticar mensagens eviadas) validar no seu provedor para não ser rejeitadas no destino como sendo um SPAM enviando diretametne de uma conexão ADSL, veja mensagens que circulou na Linux-br sobre ete tema;
http://www.zago.eti.br/email/servidor-adsl-bloqueado.txt
Considerando que voce já tem o Postfix, Fetchmail e IMAP configurados e trocando e-mail internamente, vamos pra configuração do SASL, que validará as mensagens no teu servidor, fazer relay no provedor externo.
Precisa instalar os pacotes do cyrus-sasl, caso ainda não instalou, execute;
smart install cyrus-sasl -y
Depois de instalar SASL e seus plugins, precisa criar e configurar o arquivo de senhas:
echo "smtp.seudominio.com.br usuario:suasenha" > /etc/postfix/sasl_passwd
Exemplo para o usuario zago com senha minhasenha autenticar no servidor http://www.zago.eti.br:
echo "smtp.zago.eti.br zago:minhasenha" > /etc/postfix/sasl_passwd chown root.root /etc/postfix/sasl_passwd chmod 600 /etc/postfix/sasl_passwd postmap hash:/etc/postfix/sasl_passwd
Estas 4 linhas servem para criar o arquivo de senhas, ajustar as permissões e criar o banco de dados de senhas do SASL.
deverá ficar assim:
[root@localhost ~]# cat /etc/postfix/sasl_passwd smtp.zago.eti.br zago:minhasenha
OBS - Na configuração do SASL o dominio deve ser o mesmo utilizado no item (relayhost = smtp.zago.eti.br) do /etc/postfix/main.cf, portanto utilize o mesmo dominio nas duas configurações, nos dois arquivos, tanto no:
/etc/postfix/sasl_passwd e /etc/postfix/main.cf
Caso ocorra algum erro ou quando fizer qualquer alteração de usuário ou senha, edite o /etc/postfix/sasl_passwd, retire todos os espaços e use um TAB como separador entre dominio e usuário:senha, (posicione o cursor depois da ultimo caracter do dominio e pressione a tecla TAB), use seu editor ou pelo "vi":
vi /etc/postfix/sasl_passwd
Sempre que alterar /etc/postfix/sasl_passwd precisa recriar o banco de dados, execute esta linha de comando:
postmap hash:/etc/postfix/sasl_passwd
Este comando não retorna mensagem, utiliza os usuarios e senhas do arquivo: /etc/postfix/sasl_passwd pra criar o bando de dados do SASL em: /etc/postfix/sasl_passwd.db, sempre que utilizar o comando acima, ou alterar qualquer parametro do /etc/postfix/main.cf
Precisa também recarregar o postfix pra valer as alterações, para recarregar (reiniciar) o postfix execute;
service postfix reload
O arquivo de configuração do postfix /etc/postfix/main.cf pode ser copiado de outra istalação, ou faça a seu modo editando o arquivo /etc/postfix/main.cf
Fazer relay no provedor, precisa configurar o main.cf pra utilizar os SASL, precisa, após a instalação e configuração do SASL, edite o /etc/postfix/main.cf e acrescente no final deste arquivo as seguintes linhas:
# Autenticação smtp smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
Salve, feche o arquivo e recarregue o arquivo de configuração do postfix:
service postfix reload
Agora pode fazer testes com envio de mensagens para o mundo, em uma estação da rede configurada para acessar este servidor interno, faça testes de envio de e-mail para o mundo, isto é, fazendo relay no teu provedor,
Alterações, inclusão de novos usuários e senhas, após qualquer alteração neste arquivo precisa recriar o banco de dados do SASL, o melhor é remover tudo e começar do zero, então faça isto:
use seu editor de texto preferido ou pelo "vi" para alterar, incluir ou fazer as correções da configuração:
vi /etc/postfix/sasl_passwd
Execute as linhas de comando abaixo, na ordem em quje estão, elas servem para remover o banco de dados, ajustar as permissões, recriar o banco de dados do SASL e por ultimo recarregar o postifix pra valer as alterações.
rm -rf /etc/postfix/sasl_passwd.db chown root.root /etc/postfix/sasl_passwd chmod 600 /etc/postfix/sasl_passwd postmap hash:/etc/postfix/sasl_passwd service postfix reload
Em testes para usar o transport, ainda não funciona.
rm -rf /etc/postfix/transport.db rm -rf /etc/postfix/transport.domains.db chown root.root /etc/postfix/transport chmod 600 /etc/postfix/transport postmap hash:/etc/postfix/transport chown root.root /etc/postfix/transport.domains chmod 600 /etc/postfix/transport.domains postmap hash:/etc/postfix/transport.domains
Agora teste a configuração enviando e-mail para o mundo, acompanhe o que está acontecendo, veja no log, execute:
tail -f /var/log/maillog
OBS. - O formato de dados no arquvo /etc/postfix/sasl_passwd pode ser diferente de um provedor pra outro, alguns exemplos;
UOL, IG, e muitos outros provedores funciona neste formato:
smtp.dominio.com.br usuário:senha smtp.uol.com.br zagolinux:minhasenha
YAHOO! - tem que usar neste formato:
smtp.mail.yahoo.com.br zagolinux:minhasenha
Com um pequeno detalha a mais, antes de fazer relay, precisa entrar na sua conta de e-mail do Yahoo via web, em "Oções do Yahho Mail" procure por "Acesso POP e REdirecionamento" confirme a opção por acesso via POP, esta opção é a mesma que voce precisa configurar pra enviar e-mail atraves de clientes de e-mail.
LOCALWEB, FASTWEB, SCHEMER etc...
Quem tem sites hospedados na Localweb, Schemer, fastweb e etc..
o formato da linha de configuração no /etc/postfix/sasl_passwd tem que ser neste formato;
smtp.dominio.com.br usuário@dominio.com.br:senha smtp.seudominio.com.br zago@seudominio.com.br:minhasenha
Veja que o detalhe está no usuário, pra alguns provedores se usa o nome de login, pra outros o nome de login é a conta de e-mail completa no formato usuario@dominio.com.br
Quando não funcionar de uma maneira tente da outra.
testes foram feitos com sites hospedados em:
http://www.fastweb.com.br http://www.schemer.com.br http://www.localweb.com.br OBS. nestes servidores, a configuração do /etc/postfix/sasl_passwd tem este formato: smtp.seudominio.com.br zago@seudominio.com.br:minhasenha
Nos provedores abaixo, funciona neste formato:
smtp.uol.com.br zagolinux:minhasenha http://www.uol.com.br http://www.ig.com.br http://www.bol.com.br http://www.yahoo.com.br http://www.click21.com.br
Anotações de rascunho, este tópico contém erros e não funciona.
root@aula# testsaslauthd testsaslauthd: usage: testsaslauthd -u username -p password
testsaslauthd -u zago -p minhasenha testsaslauthd -u zago -p minhasenha -s smtp
Tentei com diversas opções e sempre retorna esta mensagem;
connect() : No such file or directory :0
Deveria retornar algum OK, qualquer dia verifico melhor.
OBS IMPORTANTE. - Ainda não entendi, nem tenho a solução, está funcionando com esta "gambi"
Baixar e-mail do provedor para o servidor local, o fetchmail baixa e-mail de diversos provedores sem problema algum.
Enviar e-mail, precisa fazer relay no provedor, coloquei todas as contas com suas respecitivas senhas no arquivo de configuraçao do SASL e nenhuma funcionou, quando coloquei somente uma conta de e-mail e sua senha no SASL todas as contas passaram a fazer relay, ficou com uma única conta de email cadastrada arquivo:
/etc/postfix/sasl_passwd
Tenho diversas estações cada uma com contas de e-mail diferentes, a única coisa incomum entre elas é o dominio, mesmo as contas não cadastradas no SASL enviam e-mail pro mundo normalmente, estão fazendo relay no provedor com a conta cadastrada, por exemplo, tenho somente a conta de e-mail do zago@zago.eti.br cadastrada no SASL, mas o antonio, francisco, rui, diceu e todos os usuários que tem conta no servidor interno mandam e-mail pro mundo, até contas de e-mail inexistentes no provedor que faz relay.
Enfim, a dupla postfix+sasl faz relay de qualquer conta na única conta cadastrada, ficou confuso, qualquer momento explico isto melhor......
Caso alguém tenha a solução, por favor, envie pro FAQ.
Pelo que pesquisei, a solução está no /etc/postfix/transport com a diretiva no main.cf, acrescentei esta linha;
transport_maps = hash:/etc/postfix/transport
Comentei esta linha;
relayhost = smtp.uol.com.br
Arquivo de senhas - cat /etc/posttix/sasl_passwd smtp.zago.com.br zago:minhasenha smtp.uol.com.br antoniofzago:minhasenha smtp.ig.com.br zago_hard:minhasenha