Domínio virtual de email Introdução Com o poder dos computadores pessoais atualmente, as tarefas antiga­ mente feitas por vários servidores hoje são facilmente feitas por ape­ nas um. Com o sucesso da internet e do sistema de email, somos levados a gerenciar vários domínios de email independentes na mesma máquina. E aí entra o Linux! 11.. PPrriinnccííppiiooss Domínios virtuais de email é um jeito de se gerenciar listas independentes de usuários no mesmo servidor. Cada domínio virtual tem seu próprio arquivo de senhas, seu próprio diretório de email e seu próprio arquivo de apelidos. Para cada domínio virtual de email, o _C_o_n_f_i_g_u_r_a_d_o_r _L_i_n_u_x irá definir: · /etc/vmail/passwd.domínio_virtual · /etc/vmail/shadow.domínio_virtual · /etc/vmail/aliases.domínio_virtual · /var/spool/vmail/domínio_virtual/ · /vhome/domínio_virtual/ onde domínio_virtual é um domínio, como foo.com.br por exemplo. 22.. AA ccaaiixxaa ddee ddiiáállooggoo ddaa ddeeffiinniiççããoo ddee ddoommíínniioo vviirrttuuaall Para criar um domínio virtual de email novo, você deve completar uma caixa de diálogo simples. Há outras tarefas relacionadas ao DNS e a apelidos de IP, que são descritas em outra seção desta ajuda. Segue-se a descrição da caixa de diálogo principal. 22..11.. UUmm nnoommee Você deve dar um nome ao domínio. Isso é tudo. 22..22.. DDeessttiinnoo ddee rreettoorrnnoo É um campo opcional. Normalmente, quando uma mensagem de email é enviada para uma conta de um domínio virtual de email, o processamento seguinte ocorre: · Checa se existe um apelido com esse nome. Se sim, manda a mensagem para todos os membros da lista. Apelidos podem apontar para outros apelidos. · Caso não haja um apelido, então checa a lista do domínio virtual. O email é apendado à caixa do usuário correspondente. · Caso não haja nem apelido nem usuário, a mensagem é rejeitada e o remetente receberá uma mensagem de erro. Se esse campo estiver definido, o email ao invés de ser rejeitado, será enviado a esse endereço de retorno, que pode ser: vvaazziioo É o padrão. A mensagem é rejeitada. oouuttrroo__uussuuáárriioo@@oouuttrroo__ddoommíínniioo A mensagem é enviada a um usuário específico de outro domínio. @@oouuttrroo__ddoommíínniioo A mensagem é enviada para a mesma conta, mas em outro domínio. Por exemplo, um email enviado para desconhecido@este_domínio será repetida para desconhecido@outro_domínio. ccoonnttaa A mensagem é enviada para outra conta no mesmo domínio. Esta conta pode ser um apelido. 22..33.. AArrqquuiivvooss ddee aappeelliiddooss Cada domínio virtual tem implícito um arquivo de apelidos nomeado /etc/vmail/aliases.domínio onde "domínio" é o nome do domínio. Você pode definir mais um. Eles serão usados pelo programa vdeliver. O implícito tem a prioridade mais alta. O vdeliver olha no primeiro, depois no segundo, até achar o nome. Note que, como os apelidos normais (/etc/aliases) processados pelo sendmail, a definição de apelidos pode apontar para outros apelidos, listas de discussão podem ser definidas, etc. Os arquivos de apelidos são gerenciados pela mesma caixa de diálogo dos apelidos do sendmail, e como tal, oferece as mesmas capacidades. 22..44.. AAppeelliiddooss ppaarraa eessttee ddoommíínniioo É possível ter vários nomes de domínio que apontam para o mesmo diretório de email. Você pode adicionar quantos forem necessários. Por exemplo, alguém define o domínio virtual foo.com e depois registra o foo.com.br. Usando apelidos de domínio, ambos os domínios serão equivalentes. 33.. UUmmaa nnoottaa aanntteess ddee iinniicciiaarr O domínio virtual de email é um suplemento às capacidades normais do email de seu servidor. O domínio de email normal ainda é gerenciado apropriadamente e os emails são guardados em /var/spool/mail. Então, se sua máquina está correntemente aceitando emails para o domínio foo.com.br e você quer receber separados os emails para foo1.com.br e foo2.com.br, você apenas terá que definir estes dois domínios virtuais de email. A configuração de foo.com.br permanece inalterada. 44.. CCoommoo ddeeffiinniirr uumm ddoommíínniioo vviirrttuuaall ddee eemmaaiill Aqui vai um passo-a-passo: 44..11.. CCoommoo aaddaappttaarr ooss cclliieenntteess PPOOPP Nada de especial deve ser feito no lado do usuário POP, o que é uma coisa excelente: "queremos abrigar vários servidores de email em uma máquina, e não queremos que todos saibam disso" &:) 44..22.. CCoommoo iinnssttaallaarr oo sseerrvviiddoorr O truque para ler o email é exatamente o mesmo de um domínio virtual de WWW: você precisa de endereços IP. Suponha que se queira criar três domínios virtuais de email: va.foo.com.br, vb.foo.com.br e vc.foo.com.br. Pense neles como se você fosse instalar três servidores independentes, cada um servindo um único domínio. Isso é o que será descrito, e depois mostrado que esses três servidores podem ser colocados em apenas uma máquina. 44..22..11.. NNoo DDNNSS Do ponto de vista do DNS, tem-se um servidor de email por domínio. Então o registro MX de cada domínio será: · va.foo.com.br -> email.va.foo.com.br · vb.foo.com.br -> email.vb.foo.com.br · vc.foo.com.br -> email.vc.foo.com.br Com o DNS, é isso o que se informa ao mundo, e aos usuários de email. No mais, usuários do va.foo.com.br, buscarão seu email em email.va.foo.com.br, usuários do vb.foo.com.br, buscarão seu email em email.vb.foo.com.br, e usuários do vc.foo.com.br, buscarão seu email em email.vc.foo.com.br. Com essa configuração, pode-se muito bem ter um servidor (real) por domínio de email (o estado corrente antes do domínio virtual de email). 44..22..22.. IInnssttaallaannddoo ooss sseerrvviiddoorreess Para continuar a configuração (seja real ou virtual), vá ao DNS e defina um número IP para cada servidor (esse é o ponto-chave). Serão usado números IP privados como exemplo, e todos estarão na mesma rede. · email.va.foo.com.br -> 172.16.0.1 · email.vb.foo.com.br -> 172.16.0.2 · email.vc.foo.com.br -> 172.16.0.3 Então pode-se instalar três servidores Linux com estes IPs e dizer ao _S_e_n_d_m_a_i_l de cada um para aceitar um desses três domínios. 44..22..33.. TToorrnnaannddoo--ssee vviirrttuuaall Ao invés de se instalar três servidores Linux, instale apenas um. Para cada domínio virtual de email, deve-se fazer: · Defina-o usando o _C_o_n_f_i_g_u_r_a_d_o_r _L_i_n_u_x, o que envolve apenas nomear o domínio. · Defina um apelido de IP (com o _C_o_n_f_i_g_u_r_a_d_o_r _L_i_n_u_x) para que a máquina responda por esse número IP também. Isso é feito no menu "Ambiente de rede/Apelidos de IP para máquinas virtuais" · Instale o /usr/lib/linuxconf/lib/vpop3d como um substituto ao /usr/sbin/in.pop3d no /etc/inetd.conf. O vpop3d é um bom substituto ao pop3d mesmo que você não use domínios virtuais. O apelido de IP é o ponto-chave. O protocolo POP não tem como identificar o destino de uma requisição, exceto com o número IP de destino. É por isso que clientes POP devem usar um nome diferente (na verdade um IP diferente) para ler as mensagens de domínios de email diferentes, o que é algo já esperado. 44..22..33..11.. CCoommoo iinnssttaallaarr oo vvppoopp33dd O vpop3d é um substituto ao servidor POP que você usa em sua distribuição? Nem sempre. Várias distribuições vêm com um pop3d diferente, que tem suporte a NIS, PAM e outros métodos de autenticação. A melhor maneira de se ter suporte a tudo isso facilmente é deixar o servidor pop3d nativo cuidando do domínio de email _p_r_i_n_c_i_p_a_l, e o vpop3d gerenciando apenas os virtuais. Para obter este resultado, simplesmente passe como um argumento ao vpop3d a rota do servidor pop3 nativo. O vpop3d lhe dará o controle das requisições POP feitas ao domínio principal. Aqui vai um exemplo de como ajustar o /etc/inetd.conf: pop-3 stream tcp nowait root /usr/sbin/tcpd /usr/lib/linuxconf/lib/vpop3d /usr/sbin/ipop3d Então para instalá-lo, não retire a chamada do pop3d, mas simplesmente coloque o /usr/lib/linuxconf/lib/vpop3d na sua frente. Essa linha pode variar um pouco de distribuição para distribuição. 55.. CCoommoo ddeeppuurraarr uummaa ccoonnffiigguurraaççããoo Muitos erros cometidos na definição de domínios virtuais são relacionados ao DNS. Aqui vão alguns testes que você pode fazer para verificar se sua configuração está correta. Um aviso: usar clientes POP (programa de email) não adianta para testar esse tipo de configuração. Esses programas não são muito informativos para esse tipo de tarefa. Ou funcionam ou não. 55..11.. CChheeccaannddoo oo DDNNSS Para cada domínio virtual, você deve fazer algo no DNS. Usando-se o domínio va.foo.com.br como exemplo, aqui vão os passos: 55..11..11.. OO MMXX O comando nslookup -q=mx va.foo.com.br deverá mostrar algo útil. Pelo menos o nome do servidor de email deve ser obtido com seus números IP. Ou será email.va.foo.com.br, ou o nome oficial do servidor. O nome obtido não precisa fazer parte do domínio va.foo.com.br, apenas deve apontar para o servidor físico apropriado. 55..11..22.. OO sseerrvviiddoorr ddee eemmaaiill vviirrttuuaall O email.va.foo.com.br deve ser definido no DNS. O comando nslookup email.va.foo.com.br deve produzir um número IP. Além disso, o comando nslookup o-número-IP-obtido deve mostrar email.va.foo.com.br. Se você não obter isso como resposta, então o servidor POP virtual não funcionará, não mesmo e ponto final. Você precisa ter o mapeamento reverso correto desse número IP. O Configurador Linux faz isso automagicamente se o mapeamento especial do reverso do domínio estiver definido no mesmo DNS do domínio virtual. Então, se você teve a saída correta desses dois comandos, você já fez a parte pior. 55..11..33.. HHáá uumm sseerrvviiddoorr oouuvviinnddoo?? Depois você faz o seguinte comando: telnet email.va.foo.com.br que deve se conectar ao servidor físico. Isso prova que o apelido de IP está instalado corretamente. 55..11..44.. HHáá uumm sseerrvviiddoorr PPOOPP vviirrttuuaall oouuvviinnddoo?? Execute o seguinte comando e veja se o vpop3d está instalado apropriadamente. Em caso afirmativo, nada mais pode dar errado. telnet email.va.foo.com.br pop-3 Você deve obter +OK Virtual va.foo.com.br POP3 Server (Version 1.004) ready. O "va.foo.com.br" é o ponto-chave aqui. Se você não o obteve como resposta, então o domínio virtual, ou não está definido, ou o vpop3d não está instalado no /etc/inetd.conf. 55..11..55.. UUmmaa ffeerrrraammeennttaa ppaarraa ssee ffaazzeerr uummaa cchheeccaaggeemm rrááppiiddaa O script /usr/lib/linuxconf/lib/checkvdomain pode ser usado para se fazer uma checagem da instalação do vpop3d para um domínio virtual. Rode-o sem argumentos para aprender mais. O script /usr/lib/linuxconf/lib/testalldomain lê o arquivo /etc/named.boot e extrai todos os domínios nele definidos. Então ele roda o script checkvdomain (assumindo que há uma máquina virtual de email para cada domínio) em todos os domínios. Ele diz então se o domínio está config­ urado apropriadamente ou não. É muito útil para um administrador que gerencia muitos domínios virtuais. 66.. UUmmaa vveezz ooppeerraacciioonnaall 66..11.. CCoommoo aaddiicciioonnaarr uussuuáárriiooss PPOOPP Uma vez que um domínio virtual de email está funcionado, você ainda tem que adicionar usuários POP a ele. Há uma entrada de menu em Contas de usuários chamada Contas POP virtuais (somente email) . Ele lhe deixa escolher um domínio virtual e adicionar ou editar contas novas nele. 66..22.. CCoo--aaddmmiinniissttrraaddoorr Para cada domínio virtual de email, há um privilégio novo adicionado ao Configurador Linux. Você pode garantir esse privilégio a qualquer usuário normal. Ele poderá gerenciar a lista de usuários (apenas usuários POP) do domínio virtual. Isso é totalmente operacional usando-se a interface HTML também. 66..33.. CCoommoo uumm uussuuáárriioo ppooddee ttrrooccaarr aa ssuuaa sseennhhaa Um problema com os usuários POP (e também usuários PPP) é que eles não têm acesso a uma conta shell de onde eles poderiam facilmente trocar sua senha. O Configurador Linux provê uma solução a esse problema, mas está disponível apenas na interface HTML. Ela tem suporte total a domínios virtuais de email. Se você apontar seu navegador para a seguinte URL: http://seu_servidor:98/htmlmod:userpass: você acessará uma tela simples que deixa qualquer um trocar sua própria senha. O "seu_servidor" pode ser qualquer um dos servidores POP virtuais ou o nome normal de seu servidor. O Configurador Linux gerenciará o arquivo de senhas apropriado baseado no número IP usado para alcançá-lo. É uma boa idéia _e_s_c_o_n_d_e_r essa URL em uma de suas páginas de informações de seu servidor (é meio chata de digitar). 77.. AAllgguunnss pprroobblleemmaass 77..11.. TTooddooss ooss eemmaaiill ddee ddoommíínniiooss vviirrttuuaaiiss ssaaeemm mmaassccaarraaddooss Isso é causado por uma má configuração do DNS. Todo o email que sai do servidor é reescrito, então parece que veio do domínio principal do servidor. Esse problema se origina de uma funcionalidade nova do sendmail. No seu início, o sendmail varre todas as interfaces de rede (e apelidos de IP) e pega os nomes associados com seus números IP. Ele assume que todos esses nomes são equivalentes ao domínio principal do servidor. Qualquer email originário de um desses nomes será mascarado como vindo do domínio principal. O problema no DNS é simplesmente que você definiu o mapeamento reverso de um número IP para um nome de domínio, ao invés de uma máquina deste domínio. O Configurador Linux não deixará você cometer esse erro, pois ele nunca faz um mapeamento reverso que aponte para um nome de domínio. Mas no caso de se fazer o DNS na mão, está-se sujeito a isso. Então certifique-se que todos os números IP associados a apelidos de IP apontam para uma máquina de um domínio, e não para o próprio domínio. Reinicie seu DNS e seu sendmail e tudo ficará correto. 88.. CCoonncclluussããoo Depois de definir os apelidos de IP apropriados, um usuário POP não tem como saber se há três servidores ou apenas um. Esse é o ponto- chave. Se a carga no servidor crescer, você pode querer distribuir alguns domínios virtuais de email em outros servidores. Para todos (os usuários, o DNS), isso será completamente transparente.