Install Exim4 on Etch

Installation of Exim4 as mail server for IMAP and POP3 protocol. The SMTP is routed through another SMTP service provider.

Usually Exim4. We want secure authentication, viruses checking and all, so :

 
tchetch@debian# aptitude install exim4 exim4-daemon-heavy

Configuration

 
tchetch@debian# dpkg-reconfigure exim4-config

  • Split configuration into small files? <No>
  • General type of mail configuration: <mail sent by smarthost; received via SMTP or fetchmail>
  • System mail name: <your_domain.com>
  • IP-addresses to listen on for incoming SMTP connections: <[empty]>
  • Other destinations for which mail is accepted: <[empty]>
  • Machines to relay mail for: <[empty]>
  • IP address or host name of the outgoing smarthost: <your_smtp.provider.com>
  • Hide local mail name in outgoing mail? <No>
  • Keep number of DNS-queries minimal (Dial-on-Demand)? <No>
  • Delivery method for local mail: <Maildir format in home directory>

Configure domains

To configure domain list via LDAP lookup. Each of our domain we have are specified as associateddomain in o=iro.

dn: o=iro
objectclass: organization
objectclass: domainrelatedobject
o: iro
associateddomain: irovision.ch
associateddomain: iro.vsnet.ch

So if a mail is for one of those domains, we want to handle the mail else we route to another smtp server. To do so we have in our file /etc/exim4/exim4.conf.template (Commented part comes from original Debian configuration (with two #)) :

# TCHETCH MOD
##.ifndef MAIN_LOCAL_DOMAINS
##MAIN_LOCAL_DOMAINS = DEBCONFlocal_domainsDEBCONF
##.endif
##domainlist local_domains = MAIN_LOCAL_DOMAINS

# We search for associateddomain, but the answere will be "irovision.ch, iro.vsnet.ch".
# We replace ',' by ':' to get "irovision.ch: iro.vsnet.ch" with ${sg {subject}{regex}{replacement}} !
domainlist local_domains = ${sg { ${lookup ldap{ \
  ldap://debian/o=iro?associateddomain?base?}}}{,}{:}}

Configure router for LDAP user

As we want only LDAP user to be routed (no system user), we need a new router. We remove local_user router and add a ldap_user. The matching is done on mail attribute, we get the local part (before @) and compare it to the given local part :

LDAP_USER_INFO = ${lookup ldap{\
  ldap://siro5.iro/ou=Users,o=iro?mail,homedirectory,uidnumber,gidnumber?sub?(mail=${quote_ldap:$local_part@$domain})}}
LDAP_USER_EMAIL = ${extract {mail}{LDAP_USER_INFO}}
LDAP_USER_HOME = ${extract {homedirectory}{LDAP_USER_INFO}}
LDAP_USER_UID = ${extract {uidnumber}{LDAP_USER_INFO}}
LDAP_USER_GID = ${extract {gidnumber}{LDAP_USER_INFO}}
  
ldap_user:
  debug_print = "R: ldap_user for $local_part@$domain"
  driver = accept

  local_parts = ${local_part: ${extract {1}{,}{LDAP_USER_EMAIL}}}
  router_home_directory = ${extract {1}{,}{LDAP_USER_HOME}}
  user = ${extract {1}{,}{LDAP_USER_UID}}
  group = ${extract {1}{,}{LDAP_USER_GID}}

  transport = LOCAL_DELIVERY
  cannot_route_message = Unknown user


# REMOVE local_user from original configuration
#
#local_user:
#  debug_print = "R: local_user for $local_part@$domain"
#  driver = accept
#  domains = +local_domains
#  check_local_user
#  local_parts = ! root
#  transport = LOCAL_DELIVERY
#  cannot_route_message = Unknown user

Configure local transport

By default maildir format store all its data in $home/Maildir. As our home directory are avaible on Windows, we want to hide thoses file. We just want to have our data in $home/.maildir. This happens in maildir_home transport :

maildir_home:
  debug_print = "T: maildir_home for $local_part@$domain"
  driver = appendfile
# TCHETCH MOD
##  .ifdef MAILDIR_HOME_MAILDIR_LOCATION
##  directory = MAILDIR_HOME_MAILDIR_LOCATION
##  .else
  directory = $home/.maildir
##  .endif
 
debian/exim4/install.txt · Last modified: 2008/04/23 09:01 by tchetch
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki