Servidor SMTP simples para encaminhamento baseado em alias

4

Estou procurando um servidor SMTP que será usado apenas para encaminhar alguns endereços de e-mail. Dois requisitos:

  1. Fácil de instalar e configurar no Ubuntu.
  2. Possui um arquivo de aliases fácil de adicionar automaticamente. Idealmente, seria um arquivo de texto composto por linhas como "[email protected] [email protected]".
  3. (Idealmente) Pode ser facilmente configurado para aceitar apenas mensagens de hosts específicos.

Eu tenho tentado o Postfix, mas estou me prendendo em mensagens de erro como Recipient address rejected: User unknown in virtual alias table e Recipient address rejected: User unknown in local recipient table . Então, eu me pergunto se existe uma solução mais fácil.

    
por Steve Bennett 22.01.2013 / 04:59

2 respostas

3
  1. Use o Postfix

    No Ubuntu, faça o seguinte

    apt-get install postfix
    

    Estou fazendo exatamente a mesma coisa com minha configuração de e-mail vps. verifique meu post no blog Tiny VPS Postfix . Estou copiando o exemplo abaixo

    /etc/postfix/main.cf

    # See /usr/share/postfix/main.cf.dist for a commented, more complete version
    
    # Debian specific:  Specifying a file name will cause the first
    # line of that file to be used as the name.  The Debian default
    # is /etc/mailname.
    #myorigin = /etc/mailname
    
    smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
    biff = no
    
    # appending .domain is the MUA's job.
    append_dot_mydomain = no
    
    # Uncomment the next line to generate "delayed mail" warnings
    #delay_warning_time = 4h
    
    readme_directory = no
    
    # TLS parameters
    smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    smtpd_use_tls=yes
    smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    
    # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
    # information on enabling SSL in the smtp client.
    
    myhostname = <YOUR HOSTNAME>
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = /etc/mailname
    mydestination = <YOUR DOMAIN NAME>, localhost.domain, localhost
    relayhost =
    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    mailbox_command = procmail -a "$EXTENSION"
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = all
    
    smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        reject_invalid_hostname,
        reject_non_fqdn_hostname,
        reject_non_fqdn_sender,
        reject_non_fqdn_recipient,
        reject_unknown_recipient_domain,
        reject_unlisted_recipient,
        reject_unauth_destination,
        reject_rbl_client cbl.abuseat.org,
        reject_rbl_client bl.spamcop.net,
        reject_rbl_client relays.mail-abuse.org,
        reject_rbl_client dnsbl.proxybl.org,
        reject_rbl_client truncate.gbudb.net,
        reject_rbl_client dnsbl.njabl.org,
        permit
    

    Lembre-se de alterar <YOUR HOSTNAME> e <YOUR DOMAIN NAME>

  2. Arquivo de alias

    Seu arquivo /etc/aliases deve ser semelhante ao seguinte

    foo: [email protected]
    bar: [email protected]
    

    O lado esquerdo não deve ter nome de domínio, apenas nome de usuário. O domínio é controlado pela configuração do seu postfix. então faça o seguinte

    cd /etc
    postalias aliases
    service postfix restart
    
  3. Restrição de host único

    Para permitir apenas o email de um único (ou alguns) host, vou usar uma maneira muito preguiçosa para fazê-lo.

    Supondo que o IP do host de entrada permitido tenha o IP 192.168.1.100, inclua-o em mynetworks

    mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.100
    

    Altere smtpd_recipient_restrictions para seguinte

    smtpd_recipient_restrictions =
        permit_mynetworks,
        reject_unlisted_recipient
    

    Somente postfix (e sempre) aceita o email do (s) host (s) listado (s) em mynetworks . E rejeite todo o resto.

  4. Configuração do DNS

    Lembre-se de configurar o registro MX e o registro spf.

por 22.01.2013 / 05:48
1

Eu uso o Postfix de maneira semelhante para encaminhar para outro servidor. Usando as três opções de configuração, mas para a sua configuração, existe uma maneira mais fácil.

  • relay_recipient_maps = ldap: /etc/postfix/ldap_relay_recipients_maps.cf
  • transport_maps = ldap: /etc/postfix/ldap_transport_maps.cf
  • relay_domains = ldap: /etc/postfix/ldap_relay_domains.cf

Um dos meus arquivos LDAP se parece com isso para consultar uma fonte LDAP no Zimbra ...

server_host=ldap://[mail.domain.com]:389
server_port=389
search_base=
query_filter = (&(|(zimbraMailDeliveryAddress=%s)(zimbraMailAlias=%s)(zimbraMailCatchAllAddress=%s))(zimbraMailStatus=enabled))
result_attribute = zimbraMailDeliveryAddress,zimbraMailAlias
version = 3
ldap_cache = yes
ldap_cache_expiry = 600
ldap_cache_size = 64256
bind = yes
bind_dn = uid=[valid login],cn=[valid cn],cn=[valid cn]
bind_pw = [a valid password]
timeout = 30

No entanto, com base no que você está procurando, seria mais fácil manter as informações em tabelas de hash locais que podem ser usadas para essa finalidade. A única coisa que você precisa lembrar é que, ao fazer alterações nos arquivos, é necessário executar novamente o postmap para criar a tabela de hash amigável do postfix.

  • relay_recipient_maps = hash: / etc / postfix / relay_recipients_maps
  • relay_domains = fwddomain.com
  • transport_maps = hash: / etc / postfix / transport_maps

Você precisará criar um arquivo de texto no local acima com os seguintes pares de entrada: {[endereço de e-mail] OK}

[email protected] OK
[email protected] OK
[email protected] OK

Execute o postmap no arquivo acima para gerar o arquivo hash real que é criado na mesma pasta que o relay_recipients_maps.db. O Postfix irá agora verificar este arquivo para os destinatários válidos para entrega.

Você precisa informar ao Postfix onde enviar e-mails para esse domínio quando ele for recebido. Fazendo a mesma coisa com o arquivo / etc / postfix / transport_maps, você pode inserir pares válidos que são o domínio para o qual o e-mail está indo e o host para encaminhá-lo para.

fwddomain.com      smtp:mail.fwddomain.com

Espero que isso ajude você a seguir a direção certa. Há muito mais informações sobre como fazer esses tipos de arquivos de configuração na Internet e outros podem até usar DBs para procurar por essas opções de configuração.

    
por 22.01.2013 / 06:06