Sendmail Virtual Domain Mapping: Key Differences Between /etc/aliases and /etc/mail/virtusertable


16 views

In Sendmail configuration, both /etc/aliases and /etc/mail/virtusertable handle email routing, but serve fundamentally different purposes:

# /etc/aliases example:
webmaster: john,sarah
support:   |/usr/local/bin/support_script
info:      /dev/null

The virtusertable shines when dealing with multiple domains on a single server:

# /etc/mail/virtusertable entries:
user@aaa.com      localuser1
@bbb.com          localuser2
sales@ccc.com     external@otherdomain.com
Feature /etc/aliases virtusertable
Domain-based routing No Yes
Pipe to programs Yes No
File output Yes No
Cross-domain forwarding Limited Full support

After modifying either file, remember to:

# For aliases:
newaliases

# For virtusertable:
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable

Combine both for powerful routing scenarios:

# virtusertable entry:
@special.com      internal-list

# aliases entry:
internal-list:    ":include:/path/to/member/list",
                  |/usr/local/bin/process_special

In Sendmail configuration for multi-domain mail servers, both /etc/aliases and /etc/mail/virtusertable handle email routing but serve fundamentally different purposes:

# Typical virtusertable entry:
info@aaa.com    localuser1
sales@bbb.com   localuser2
@ccc.com        localuser3

# Typical aliases entry:
webmaster:      admin
postmaster:     root
abuse:          security-team

virtusertable specializes in:

  • Domain-based virtual hosting (multiple domains on one server)
  • Catch-all addresses handling (@domain.com mappings)
  • Cross-domain forwarding between virtual domains

aliases excels at:

  • System-wide local mail routing (regardless of domains)
  • Mailing list expansions (multiple recipients per alias)
  • Special system addresses (postmaster, abuse, etc.)

When configuring a multi-domain setup, you might combine both:

# virtusertable (domain-specific routing)
support@company.com   support-team
@clientdomain.com     client-mails

# aliases (system-wide routing)
support-team:         john,mary,bob
client-mails:         "/var/mail/client_processor"

For proper virtual domain handling:

  1. Always rebuild maps after changes:
    makemap hash /etc/mail/virtusertable.db < /etc/mail/virtusertable
    newaliases
    
  2. Enable virtual hosting in sendmail.mc:
    FEATURE(virtusertable', hash -o /etc/mail/virtusertable.db')dnl
    

The virtusertable lookup occurs before aliases processing, making it more efficient for domain-based routing. Aliases processing includes additional features like:

  • Pipe delivery to programs
  • File appending
  • Include file expansion

For high-volume servers, consider moving frequently accessed aliases to virtusertable where possible.