Postfix, alias virtuali e catchall per indirizzi non definiti

In Postfix 2.10.2, ho una configuration con più domini e diversi alias virtuali per assegnare gli indirizzi di posta agli utenti locali. Funziona bene finché non aggiungo un catchall.

Prima di usare pseudonimi virtuali, ho definito con una definizione chiara

  • saslauthd multi instance per l'authentication postfix smtp
  • Fornire la crittografia della posta in output smtp sul postfix
  • Effetti delle restrizioni in Postfix
  • Rifiutare di submit email a destinatari specifici con Postfix
  • Spamassassin, Dovecot e Postfix: Spostare lo spam in una cartella
  • Come posso impedire a Postfix di accettare la posta dai domini che possiede, che non ha inviato?
  • local_recipient_maps = luser_relay = catchall 

    ma siccome ho bisogno di ordinare gli indirizzi di posta da domini diversi, ho dovuto usare alias virtuali.

    Ora postfix.org dice che dovrei farlo così, che ho fatto:

    /etc/postfix/main.cf:

     virtual_alias_domains = example.com virtual_alias_maps = hash:/etc/postfix/virtual 

    / Etc / postfix / virtual:

     postmaster@example.com account1 info@example.com account1 sales@example.com account2 @example.com catchall 

    Ma se lo faccio, l'indirizzo catchall afferra tutta la mia posta anziché la posta solo non indirizzi esplicitamente definiti. Perché è questo e come posso cambiarlo?

    Ho fatto postmap virtuale e ho anche riavviato Postfix. Non ci sono errori nel registro, basta registrare la consegna all'indirizzo catchall. E c'è un avvertimento "non elenca domini example.com in MIO DESTINAZIONE e virtual_alias_domains", ma non l'ho fatto! Non ho nemless una direttiva di mdestination. (C'è una nella configuration qui sotto, ma ho aggiunto che dopo che NickW lo ha suggerito.)

    Ecco il mio conf:

     alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases append_dot_mydomain = no biff = no broken_sasl_auth_clients = yes config_directory = /etc/postfix home_mailbox = Maildir/ inet_interfaces = all inet_protocols = all mailbox_command = /usr/lib/wherecot/deliver -c /etc/wherecot/wherecot.conf -m "${EXTENSION}" mailbox_size_limit = 0 mydestination = $myhostname myhostname = mydomain.com mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 myorigin = /etc/mailname readme_directory = no recipient_delimiter = + relayhost = smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtp_use_tls = yes smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_path = private/wherecot-auth smtpd_sasl_security_options = noanonymous smtpd_sasl_type = wherecot smtpd_sender_restrictions = reject_unknown_sender_domain smtpd_tls_auth_only = yes smtpd_tls_cert_file = /etc/wherecot/wherecot.pem smtpd_tls_key_file = /etc/wherecot/private/wherecot.pem smtpd_tls_mandatory_ciphers = medium smtpd_tls_mandatory_protocols = SSLv3, TLSv1 smtpd_tls_received_header = yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes tls_random_source = dev:/dev/urandom virtual_alias_domains = $myhostname, myotherdomain.com virtual_alias_maps = hash:/etc/postfix/virtual 

    3 Solutions collect form web for “Postfix, alias virtuali e catchall per indirizzi non definiti”

    Se includi il catch all indirizzo email in alias virtuale allora functionrà.

    in main.cf :

      virtual_alias_maps = hash:/etc/postfix/virtual 

    in virtual :

     user1@example.com user1@example.com user2@example.com user2@example.com ... catchall@example.com catchall@example.com @example.com catchall@example.com 

    Quindi, l'ho capito. Alcune persone suggeriscono che il catch-all deve trovarsi in cima al file alias virtuale, ma ho provato prima e non ho aiutato (anche se ho trovato che la soluzione abbastanza logica).

    Ciò che ha funzionato è:

    1. Imposta mydestination=localhost (che non è $myhostname )
    2. Aggiungere il catchall in cima al file alias virtuale: @domain.com catchall-account@localhost
    3. Aggiungere tutti gli altri alias virtuali qui sotto: contact@domain.com contact@localhost

    L'esempio presuppone che gli utenti di UNIX siano chiamati catchall-account e il contact . Le spedizioni a contact@domain.com verranno consegnate all'utente di contatto, mentre tutta l'altra posta sarà consegnata al conto catch-all.

    Forse questo non è necessario in tutti i casi, ma nel mio caso speciale voglio utilizzare un account per salvare la posta per alcuni indirizzi, ma la posta inviata direttamente a tale account dovrebbe finire nel catch-all.

    Dopo tutto, sembra che Postfix non funziona attraverso gli alias virtuali dall'alto verso il basso, e inoltre i catch-alls hanno una priorità speciale. Sarò lieto di ulteriori commenti se qualcuno sia effettivamente in grado di spiegare questo comportmento.

    Prova a impostare la tua mydestination = $myhostname e assicurati che il tuo hostname sia configurato in main.cf, ad esempio, myhostname = mail.example.com .

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.