mini-COMO FAZER Para Instalar Qmail com MH Christopher Richardson (rdn@tara.n.eunet.de). Tradução em Revisão em 5 de Abril de 1999 por Conectiva Informática . v1.4, 5 de março de 1998 Estou apenas documentando minhas experiências de instalação para oferecer alguma ajuda para outros usuários que queiram usar a combinação acima em seu correio eletrônico. ______________________________________________________________________ Índice geral 1. Introdução 2. Detalhes do Sistema Utilizado 3. Instalação do Qmail 3.1 Maildir2smtp 4. Instalação MH 4.1 mtstailor 4.2 mh_profile 5. Fetchmail 6. Exmh 7. Procmail 8. ISDN 9. Fontes 10. Responsabilidade do autor ______________________________________________________________________ 11.. IInnttrroodduuççããoo Meus agradecimentos aos cidadãos da rede que têm me ajudado, e em especial a Tony Nugent (tony@trishul.sci.gu.edu.au), David Summers (david@summersoft.fay.ar.us) e S.u.S.E (distribuição Linux) que tornaram a instalação Linux tão mais fácil e também aos autores dos excelentes programas acima. O que é qmail e por que devo usá-lo? Aqui está a descrição do autor (Dan Bernstein): ``Qmail é um agente de transferência de mensagem seguro, confiável, eficiente e simples. Ele foi concebido para ser um substituto de todo o sistema sendmail-binmail nas típicas máquinas UNIX conectadas a Internet. Segurança: não é apenas um objetivo, mas um requisito absoluto. A entrega de mensagens é crítica para muitos usuários; não pode ser interrompida, por isso deve ser completamente segura. Por isso eu comecei a escrever qmail: eu estava cansado das falhas de segurança dos sendmail e outros agentes de transporte de mensagens. Confiável: a filosofia de rota-direta do qmail garante que uma mensagem, uma vez aceita dentro do sistema, nunca será perdida. O qmail também suporta diretórios de mensagens, uma nova formatação de caixa postal do usuário extremamente confiável. Diretórios de mensagens diferentes dos arquivos mbox e pastas mh não serão corrompidos se o sistema tiver problemas durante a entrega. Melhor ainda, os usuários não só podem ler seguramente suas mensagens através do NFS, como qualquer número de cliente NFS pode entregar mensagens ao usuário simultaneamente. Eficiente: Num Pentium sob BSD, o qmail pode facilmente sustentar 200.000 mensagens locais por dia --- mensagens enviadas separadamente e entregues a caixas postais em um teste real! Embora as entregas remotas estejam inerentemente limitadas pela lentidão do DNS e SMTP, o qmail assume 20 entregas simultâneas por padrão, funcionando com bastante eficiência através de listas de correspondência (é por isso que finalizei o qmail: tive que configurar uma grande lista de correspondências). Simples: o qmail é imensamente menor que qualquer outro Agente de Transporte de Mensagens da Internet. Alguns motivos para isso: (1) Outros Agentes de Transporte de Mensagens têm mecanismos separados de remessa, de nomes alternativos das listas de correspondência, e o qmail tem um mecanismo simples de remessa que permite aos usuários manipular suas próprias listas de correspondência. (2) Outros Agentes de Transporte de Mensagens oferecem um espectro de modo de entrega, a partir de rápido + inseguro a lento + enfileirado. O envio qmail é instantaneamente acionado por novos itens na fila, assim o sistema qmail tem apenas um modo de entrega: rápido + enfileirado. (3) Outros Agentes de Transporte de Mensagens incluem, com eficácia, uma versão especializada do inetd que observa a média de carga. O projeto do qmail limita a carga da máquina, assim o qmail-smtpd pode rodar seguramente a partir da inetd de seu sistema. Substituto do sendmail: o qmail suporta máquinas e usuários mascarados, escondendo a máquina, domínios virtuais, clientes nulos, reescrevendo lista de proprietários, controlando revezamentos, gravando duplas devoluções, listas de endereço RFC 822 arbitrárias, mensagens cruzadas em máquinas para detecção de ciclos intermináveis, ponto de verificação por recipiente, diminuição de indisponibilidade, agendamento independente de novas tentativas de envio-recepção de mensagens, etc.. Resumindo, é mais veloz que os Agentes de Transporte de Mensagens modernos. O qmail inclui um invólucro "sendmail" de entrega para que seja usado transparentemente pelo seu leitor atual de mensagens.'' 22.. DDeettaallhheess ddoo SSiisstteemmaa UUttiilliizzaaddoo Linux SuSE 5.1 com kernel 2.0.33. PPP conectando-se ao Provedor de Serviços Internet. 33.. IInnssttaallaaççããoo ddoo QQmmaaiill Deve-se seguir as instruções descritas no arquivo INSTALL. Notas: Por favor, não tenha pressa em ler toda a documentação. Os números se referem aos passos de instalação no documento INSTALAR. · 2 - Tive que configurar os grupos e usuários manualmente segundo o INSTAL.ids. · 7 - ./qmail-makectl não funcionou no meu sistema. Acrescentei meu nome de domínio (mickey.n.eunet.de) manualmente em /var/qmail/control/me. · 23 - Certifique-se que qmail-smtpd está escrito corretamente no arquivo inetd-conf (escrevi errado, por exemplo, qmail-smptd, o que me tomou dois dias para descobrir:( ): smtp stream tcp nowait qmaild /var/qmail/bin/tcp-env tcp-env /var/qmail/bin/qmail-smtpd 33..11.. MMaaiillddiirr22ssmmttpp Dan Bernstein forneceu um pacote para enviar mensagens enfileiradas para um Provedor de Serviços Internet via linha discada. Este pacote está disponível como serialmailxxx a partir do seu site. Instale este pacote como descrito na página do manual (graças a Rupert Mazzucco (maz@pap.univie.ac.at)), ele funciona assim que instalado. maildir2smtp - acelera o maildir através do SMTP. Maildir2smtp é projetado para transmitir mensagens através de uma conexão SLIP ou PPP. Para configurar isto na extremidade desconectada, crie um novo diretório de mensagens com o nome alternativo: # maildirmake ~alias/pppdir # chown -R alias ~alias/pppdir Coloque: :alias-ppp em control/virtualdomains e ./pppdir/ em ~alias/.qmail-ppp-default. Não esqueça a barra extra em pppdir/. Então na ativação do programa PPP execute: maildir2smtp ~alias/pppdir alias-ppp- $IP `hostname` substituindo $IP pelo endereço IP remoto. Notas: · Por favor leia a página do manual completamente. · Maildir2smtp exige o endereço IP do servidor de mensagens separado por pontos. Caso não se tenha esta informação à disposição, deve-se executar o comando "ping servidor_de_mensagens.com.br" e o número IP será informado no formato adequado. · Este comando pode ser incluído no programa de acesso ao sistema para eliminar toda a correspondência enfileirada após a conexão com o Provedor de Serviços Internet. 44.. IInnssttaallaaççããoo MMHH Além disso, substituí /mh-6.8.4/mts/sendmail/smail.c por mh-qmail- smail.c de Dan Bernstein. Isso faz com que meu arquivo mh-6.8.4/conf/MH tenha o seguinte conteúdo: ______________________________________________________________________ bin /usr/bin/mh etc /usr/lib/mh #mail #mandir /usr/man #manuals standard chown /bin/chown #cp cp #ln ln #remove mv -f cc gcc ccoptions -traditional -O2 -m486 -D_NFILE='getdtablesize()' -DSIGEMT=SIGUSR1 curses -lncurses #ldoptions -s #ldoptlibs lex flex #oldload off #ranlib on mts sendmail #mf off #bboards off #bbdelivery off #bbhome /usr/spool/bboards pop on popdir /usr/lib/mh sharedlib sys5 slflags -fPIC slibdir /usr/lib mailgroup mail signal void sprintf int #editor prompter #debug off #regtest off options ATHENA options BIND options DPOP options DUMB options FCNTL options MHE options MHRC options MIME options MORE='"/usr/bin/less"' options OVERHEAD options POP2 options POPSERVICE='"pop3"' options RENAME options RPATHS options RPOP options SOCKETS options SVR4 options SYS5 options SYS5DIR options TERMINFO options UNISTD options VSPRINTF ______________________________________________________________________ Notas: · Compilar ``mts sendmail'' - ler em comp.mail.mh em outro local distinto de /smtp pode causar problemas. Dominic Mitchell (hdm@demon.net) escreveu em comp.mail.mh (13 de junho de 1997): ``Não necessariamente. Com esta opção MH ainda conversa com SMTP, através de um conector e não através da rede. Será necessária uma linha em /.mh_perfil que informe: postproc: /usr/local/nmh/lib/spost Isto passará a mensagem diretamente para o sendmail na maneira tradicional. Como se está usando o qmail, sendmail será um nome alternativo de qmail, e tudo estará bem.'' Obrigado Dominic. · Apaguei ``mail'' porque quero controlá-lo via mtstailor. 44..11.. mmttssttaaiilloorr Qmail entrega as mensagens no diretório pessoal (~/Mailbox). Acrescentei o seguinte ao meu mtstailor: localname: mickey localdomain: n.eunet.de mmdfldir: mmdflfil: Caixa Postal uucpldir: uucplfil: mmdelim1: \001\001\001\001\n mmdelim2: \001\001\001\001\n mmailid: 0 umincproc: lockldir: sendmail: /usr/lib/sendmail Notas: · sendmail: /usr/lib/sendmail é uma conexão para o nome alternativo de qmail em /var/qmail/bin. · MH não aprecia a notação com til (~/). Ao invés disso use home ou deixe espaços em branco que de acordo com a documentação equivale a $HOME. · Recentemente instalei MH e qmail na máquina do meu escritório que está conectada via Ethernet e acrescentei a seguinte linha ao mtstailor: servidores: mailserver.company.country 44..22.. mmhh__pprrooffiillee Eis aqui o meu .mh_profile: Path: Mail draft-folder: drafts unseen-sequence: unseen AliasFile: /home/rdn/.mh_aliases send: -msgid comp: -form /home/rdn/.mymh-components MailDrop: /home/rdn/Mailbox Notas: · Coloquei a linha MailDrop por segurança. 55.. FFeettcchhmmaaiill Decidi usar fetchmail porque tenho um sistema multiusuário (minha família). O Linux e o fetchmail entregam a correspondência na porta smtp monitorada por qmail. Não houveram problemas com a instalação, sendo que a múltipla entrega funciona com a seguinte configuração em .fetchmailrc: poll servidordemensagens.com.br protocol pop3 username meu_nome password minha_senha # a próximas duas linhas resolvem a questão da múltipla entrega de mensagens localdomains meudominio.br: is * here # P do fetchmail indica que deve ser indicado o seguinte parâmetro forcecr. 66.. EExxmmhh Este é o meu software de mensagens por opção. Eu o adoro. Há um problema - a maioria dos pacotes pré-compilados TCL/TK tem a opção de segurança ativada. O programa a seguir chamado .xserverrc.secure que veio com o SuSE resolve isto. #!/bin/sh # # mova este arquivo para ~/.xserverrc, se você não quiser permitir que todos # acesse o seu Servidor X. # if [ -x /usr/bin/keygen ]; then if [ ! -x /usr/bin/hostname -a ! -x /bin/hostname \ -a ! -x /usr/bsd/hostname ]; then echo "startx: não foi possível obter o nome da máquina - finalizando" exit 1 else host=`hostname` fi xauth add $host:0 . `/usr/bin/keygen` sleep 2 xauth add $host/"unix":0 . `/usr/bin/keygen` exec X :0 -auth .Xauthority $* else exec X :0 $* fi 77.. PPrrooccmmaaiill O P (Perguntas e Respostas) do qmail informa o seguinte: no arquivo /.qmail deve ser acrescentada a seguinte linha: | preline procmail A versão 3.11 pre7 mudou a variável da caixa postal padrão. Costumava ser config.h e agora é src/authenticate.c: #define MAILSPOOLHOME "/Mailbox" /* cuidado com a barra: / */ /* para entrega em $HOME/Mailbox */ Selecionei do comp.mail.mh e comp.mail.misc algumas sugestões sobre o arquivo .procmailrc. Obrigado a todos! # UMA AMOSTRA DO ARQUIVO .PROCMAILRC PARA NOVATOS # Escrito por Catherine Hampton # Versão 1.1 # Atualizado em 25/1/98 # # Distribuído como Domínio Público. # # # CONFIGURE AS VARIÁVEIS # Variáveis Internas # o seguinte foi modificado por rdn 19980303 # Todo mundo diz que o ambiente SHELL é essencial SHELL=/bin/sh # Ambiente usado para rodar procmcail. Certifique-se # que aponta para a cópia de seu sistema de sh. NÃO # substitua por um ambiente diferente a menos que # você realmente conheça o UNIX. LINEBUF=4096 # Necessário para proteger se o Procmail perder-se # com tipos particulares de mensagens. PATH=$HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/bin/mh:/usr/lib/mh: # Rota dos programas - provavelmente é melhor # não alterar nada aqui! VERBOSE=off # Mude isto para "on" ao tentar uma nova configuração # para que o Procmail registre literalmente todos os # passos executados. NÃO DEIXE LIGADO, porque ele cria # arquivos de registro imensos. # Programa Padrão & Localização de arquivos MAILDIR=$HOME/Mail # É melhor certificar-se de que este diretório existe. DEFAULT=$HOME/Mailbox # Entrada padrão da caixa postal padrão para usuários # de ambientes de trabalho2-5 na Internet Best. # Substitua pelo ambiente correto para seu sistema. LOGFILE=$MAILDIR/procmail.log # Local de registro de mensagens. Recomendado, # caso contrário os erros são enviados # diretamente para o usuário. FORMAIL=/usr/bin/formail # Útil para configurações de auto-respostas. Se # você não estiver na Internet Best, modifique # isto para sua cópia do sistema para formail. SENDMAIL=/usr/sbin/sendmail # Útil para configurações de respostas. Se # você não estiver na Internet Best, modifique # isto para sua cópia do sistema para sendmail. Procmail é um programa muitíssimo bem documentado. Leia as páginas do manual para exemplos em como configurar seu arquivo .procmailrc. 88.. IISSDDNN Eu estou incluindo isto embora não tenha uma relação direta com o qmail ou mh. Mas sem uma linha PPP para o Provedor de Serviços Internet, não haverá transmissão de mensagens. Tive muitos aborrecimentos até conseguir que o ISDN funcionasse. A distribuição SusE inclui uma configuração para ISDN, mas gostaria de ter algo mais simples. O aqui descrito foi adaptado dos programa de Bernhard Hailer (Vielen, vielen dank!). O seguinte rc.config carrega os módulos necessários durante a inicialização: #!/bin/bash # Este é um velho programa de Bernhard Hailer adaptado. LOCAL_NUMBER="91311234" # nro. de tel. (ex.091311234). REMOTE_NUMBER="0911123456" # nro. de tel. do Provedor. LOCAL_IP="192.168.0.99" # Tendo IP dinâmico isso é suficiente. REMOTE_IP="195.112.123.11" # IP do Provedor. DEVICE="ippp0" SYSPATH="/sbin" ISDNCTRL="$SYSPATH/isdnctrl" case "$1" no início) # ligar isdn insmod /lib/módulos/2.0.33/net/slhc.o insmod /lib/módulos/2.0.33/misc/isdn.o sleep 1 # carregar o módulo hisax insmod /lib/módulos/2.0.33/misc/hisax.o id=Tel0 type=5 protocol=2 irq=10 io=0x300 echo "iniciando RSDI para Linux" # global $ISDNCTRL verbose 0 $ISDNCTRL addif $DEVICE # criar nova interface $ISDNCTRL addphone $DEVICE in $REMOTE_NUMBER $ISDNCTRL addphone $DEVICE out $REMOTE_NUMBER $ISDNCTRL eaz $DEVICE $LOCAL_NUMBER $ISDNCTRL l2_prot $DEVICE hdlc $ISDNCTRL l3_prot $DEVICE trans $ISDNCTRL encap $DEVICE syncppp $ISDNCTRL huptimeout $DEVICE 300 $ISDNCTRL chargehup $DEVICE desligado $ISDNCTRL secure $DEVICE ligado $SYSPATH/ifconfig $DEVICE $LOCAL_IP pointopoint $REMOTE_IP metric 1 $SYSPATH/route add default $DEVICE $SYSPATH/ipppd /dev/ippp0 file /etc/ppp/options.ipppd & $SYSPATH/route del default ;; stop) #desligar isdn rmmod hisax.o sleep 1 rmmod isdn.o rmmod slhc.o echo "Desligando RSDI para linux" $ISDNCTRL delif ippp0 ;; *) echo "Usage: $0 (start|stop)" saída 1 ;; esac Eu uso o seguinte programa para discar, o qual é chamado simplesmente isdn ligado|desligado. #!/bin/bash # Isto é baseado num velho programa de Bernhard Hailer. IP_ADDRESS="195.112.123.11" case "$1" in on) echo "Ativando ippp0" /sbin/isdnctrl dial ippp0 # o descanso é importante pois dá tempo ao PPP para se estabelecer echo "Aguardando por segundos para negociação..." sleep 8s /sbin/route add default ippp0 echo "ligação estabelecida - verificando...." # verifica se a negociação PPP foi bem sucedida: set `ping -qc3 -i1 $IP_ADDRESS 2>/dev/null | grep transmitted` if [ $4 -gt 0 ]; then echo "Conexão Estabelecida." echo "Iniciando servidor fetchmail" /usr/bin/fetchmail -d 600 -k -v -a -L /var/log/fetchmail echo "Verificando fila de mensagens ...." /usr/local/bin/serialmail/maildir2smtp ~alias/pppdir alias-ppp- mail.server.ip.no `hostname` else echo "Conexão falhou!" /sbin/isdnctrl hangup ippp0 fi ;; off) echo -n "Desligando o servidor fetchmail " /usr/bin/fetchmail --quit /sbin/isdnctrl hangup ippp0 /sbin/route del default # e apague a rota echo "Você está desconectado!"" ;; *) echo -e "\aUso:" echo "Conexão RSDI ativada" echo "Conexão RSDI desativada" ;; esac A seguir apresentamos o arquivo de opções ipppd denominado /etc/ppp/options.ipppd: # Baseado em: # Klaus Franken, kfr@suse.de # Versão: 27.08.97 (5.1) # # Este arquivo é cópia de YaST a partir de /etc/ppp/ioptions.YaST # para opções. usuário "identificação_do_usuário" # nome do sistema (só para CHAP!) # name nome_do_ sistema # aceita os endereços IP da ponta como IP dinâmico. ipcp-accept-local ipcp-accept-remote noipdefault # tente obter o endereço IP da opção de interface específica # para ipppd (ao contrário de pppd); use só com IP estático. #useifip # desativa a compressão de cabeçalho. -vj -vjccomp -ac -pc -bsdcomp # às vezes você precisa disto: #noccp # unidade máxima de recepção (em bytes) mru 1524 # unidade máxima de transmissão (em bytes) mtu 1500 # Se esta máquina for um servidor, force a autenticação não comentando um dos # parâmetros a seguir. Porém, se esta máquina for um cliente, fazer isso # evitará conexões bem sucedidas! # Assim, somente não comente num servidor. # "+pap" / "+chap" NUR AKTIVIEREN, WENN DIES EIN SERVER IST!!! #+pap #+chap # Caso haja problemas na negociação (sem respostas para o primeiro pacote Icp) # tente diminuir o ciclo de novas tentativas. O padrão é de 3 segundos. # Tente por exemplo 2 segundos. # lcp-restart 2 99.. FFoonntteess Pacotes Necessários: A rede é tão dinâmica que é praticamente sem sentido fornecer endereços. Seguem alguns importantes: · Qmail e setserial podem ser encontrados em http://www.qmail.org/. · MH pode ser encontrado em http://www.ics.uci.edu/~mh/. · glimpse em http://glimpse.cs.arizona.edu/. · Fetchmail em http://sagan.earthspace.net/~esr/fetchmail. · Exmh em http://www.beedub.com/exmh. · Procmail em ftp.informatik.rwth-aachen.de/pub/packages/promail. 1100.. RReessppoonnssaabbiilliiddaaddee ddoo aauuttoorr As usuais: sem garantias, sem devolução de dinheiro, uso por conta e risco do leitor.