The Community Forums

Interact with an entire community of cPanel & WHM users.
  1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

EXIM Configuration Questions

Discussion in 'E-mail Discussions' started by etimeisp, Jul 31, 2014.

  1. etimeisp

    etimeisp Registered

    Joined:
    Aug 18, 2010
    Messages:
    2
    Likes Received:
    0
    Trophy Points:
    1
    Hi

    I need some help on how to integrate the below

    MailArchiva ISP Edition

    This is setup on a separate server running CentOS release 6.5

    WHM Server

    Running exim-4.82

    I have tried the link below by adding the mentioned solution to the existing exim.conf file ?

    Per the mailarchiva tech I need to configured EXIM to send SMTP traffic

    /https://www.mailarchiva.com/help/display/MAIL/Exim

    My current exim config


    Code:
    ######################################################################
    #                      ROUTERS CONFIGURATION                         #
    #            Specifies how remote addresses are handled              #
    ######################################################################
    #                          ORDER DOES MATTER                         #
    #  A remote address is passed to each in turn until it is accepted.  #
    ######################################################################
    
    # Remote addresses are those with a domain that does not match any item
    # in the "local_domains" setting above.
    
    
    
    
    deliver_local_outside_jail:
        driver = manualroute
        domains = +local_domains
        # users outside the jail will not be in /etc/passwd => We need to check if $local_part is in /jail_owner
        # we can't just check to see if they exist
        # because we still want to be able to mail root
        condition = ${if exists {/jail_owner}{1}{0}}
        transport = remote_smtp
        route_list = "* 127.0.0.1"
        # self = send allows us to send outside the jail
        # we make sure /home/virtfs does not exist before we get here 
        # to be safe
        self = send
    
    
    # Place holder
    
    democheck:
        driver = redirect
        require_files = "+/etc/demouids"
        condition = "${if eq {${lookup {$originator_uid} lsearch {/etc/demouids} {$value}}}{}{false}{true}}"
        allow_fail
        data = :fail: demo accounts are not permitted to relay email
    
    
    archive_incoming_email_domain_method:
        driver = accept
        domains = +user_domains
        router_home_directory = ${extract{5}{::}{${lookup passwd{${lookup{$domain}lsearch {/etc/userdomains}{$value}}}{$value}}}}
        require_files = "$home/etc/$domain/archive/incoming"
        condition = ${perl{should_archive_incoming_domain_message}}
        headers_add = "${perl{archive_headers}{incoming_domain}}"
        unseen
        no_verify
        transport = archiver_incoming_domain_method
    
    
    
    archive_incoming_email_local_user_method:
        driver = accept
        domains = $primary_hostname
        check_local_user
        condition = ${perl{should_archive_incoming_localuser_message}}
        unseen
        no_verify
        headers_add = "${perl{archive_headers}{incoming_localuser}}"
        transport = archiver_incoming_local_user_method
    
    
    
    archive_outgoing_email:
        driver = accept
        condition = ${perl{should_archive_outgoing_message}}
        unseen
        no_verify
        headers_add = "${perl{archive_headers}{outgoing}}"
        transport = archiver_outgoing
    
    
    
    ######################################################################
    #                      TRANSPORTS CONFIGURATION                      #
    ######################################################################
    #                       ORDER DOES NOT MATTER                        #
    #     Only one appropriate transport is called for each delivery.    #
    ######################################################################
    
    # A transport is used only when referenced from a director or a router that
    # successfully handles an address.
    
    
    # This transport is used for delivering messages over SMTP connections.
    
    begin transports
    
    
    # Place holder
    
    
    remote_smtp:
      driver = smtp
      interface = ${if exists {/etc/mailips}{${lookup{$original_domain}lsearch{/etc/mailips}{$value}{${lookup{$sender_address_domain}lsearch{/etc/mailips}{$value}{${lookup{${perl{get_sender_from_uid}}}lsearch*{/etc/mailips}{$value}{}}}}}}}}
      helo_data = ${if exists {/etc/mailhelo}{${lookup{$original_domain}lsearch{/etc/mailhelo}{$value}{${lookup{$sender_address_domain}lsearch{/etc/mailhelo}{$value}{${lookup{${perl{get_sender_from_uid}}}lsearch*{/etc/mailhelo}{$value}{$primary_hostname}}}}}}}{$primary_hostname}}
    
    
    
    dkim_remote_smtp:
      driver = smtp
      interface = ${if exists {/etc/mailips}{${lookup{$original_domain}lsearch{/etc/mailips}{$value}{${lookup{$sender_address_domain}lsearch{/etc/mailips}{$value}{${lookup{${perl{get_sender_from_uid}}}lsearch*{/etc/mailips}{$value}{}}}}}}}}
      helo_data = ${if exists {/etc/mailhelo}{${lookup{$original_domain}lsearch{/etc/mailhelo}{$value}{${lookup{$sender_address_domain}lsearch{/etc/mailhelo}{$value}{${lookup{${perl{get_sender_from_uid}}}lsearch*{/etc/mailhelo}{$value}{$primary_hostname}}}}}}}{$primary_hostname}}
      dkim_domain = $sender_address_domain
      dkim_selector = default
      dkim_private_key = "/var/cpanel/domain_keys/private/${dkim_domain}"
      dkim_canon = relaxed
    
    
    
    # This transport is used for local delivery to user mailboxes. By default
    # it will be run under the uid and gid of the local user, and requires
    # the sticky bit to be set on the /var/mail directory. Some systems use
    # the alternative approach of running mail deliveries under a particular
    # group instead of using the sticky bit. The commented options below show
    # how this can be done.
    
    
    
    local_delivery:
        driver = appendfile
        delivery_date_add
        envelope_to_add
        directory = "${extract{5}{:}{${lookup passwd{$local_part}{$value}}}}/mail"
        maildir_use_size_file
        maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
        maildir_format
        maildir_tag = ,S=$message_size
        quota_size_regex = ,S=(\d+)
        mode = 0660
        return_path_add
        group = ${extract{3}{:}{${lookup passwd{$local_part}{$value}}}}
        user = $local_part
        shadow_condition = ${if exists {${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/.cpanel/rim/bis/$local_part}{1}{0}}
        shadow_transport = rim_bis_notifier_local_user
    
    
    
    rim_bis_notifier_local_user:
        driver = pipe
        headers_only
        command = /usr/local/cpanel/bin/rim_bis_notifier "${local_part}"
        group = ${extract{3}{:}{${lookup passwd{$local_part}{$value}}}}
        user = $local_part
        log_output = true
        current_directory = "/tmp"
        return_fail_output = true
        return_path_add = false
    
    
    local_delivery_spam:
      driver = appendfile
      delivery_date_add
      envelope_to_add
      directory = "${extract{5}{:}{${lookup passwd{$local_part}{$value}}}}/mail/.spam"
      maildir_use_size_file
      maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
      maildir_format
      maildir_tag = ,S=$message_size
      quota_size_regex = ,S=(\d+)
      group = ${extract{3}{:}{${lookup passwd{$local_part}{$value}}}}
      mode = 0660
      return_path_add
      user = $local_part
    
    
    # This transport is used for handling pipe deliveries generated by alias
    # or .forward files. If the pipe generates any standard output, it is returned
    # to the sender of the message as a delivery error. Set return_fail_output
    # instead of return_output if you want this to happen only when the pipe fails
    # to complete normally. You can set different transports for aliases and
    # forwards if you want to - see the references to address_pipe below.
    
    
    address_directory:
        driver        = appendfile
        maildir_tag = ,S=$message_size
        quota_size_regex = ,S=(\d+)
        maildir_format
        maildir_use_size_file
        maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
        mode = 0660
        delivery_date_add
        envelope_to_add
        return_path_add
    
    address_pipe:
      driver = pipe
      return_output
    
    virtual_address_pipe:
      driver = pipe
      group = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      return_output
      user = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
    
    jailed_address_pipe:
      driver = pipe
      force_command
      command = /usr/local/cpanel/bin/jailexec $address_pipe
      return_output
    
    jailed_virtual_address_pipe:
      driver = pipe
      force_command
      command = /usr/local/cpanel/bin/jailexec $address_pipe
      user = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      group = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      return_output
    
    cagefs_address_pipe:
      driver = pipe
      force_command
      command = /bin/cagefs_enter $address_pipe
      return_output
    
    cagefs_virtual_address_pipe:
      driver = pipe
      force_command
      command = /bin/cagefs_enter $address_pipe
      user = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      group = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      return_output
    
    
    # This transport is used for handling deliveries directly to files that are
    # generated by aliassing or forwarding.
    
    address_file:
      driver = appendfile
      delivery_date_add
      envelope_to_add
      return_path_add
    
    
    # This transport is used for handling autoreplies generated by the filtering
    # option of the forwardfile director.
    
    
    virtual_userdelivery_spam:
      driver = appendfile
      delivery_date_add
      envelope_to_add
      directory = "${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/mail/${domain}/${local_part}/.spam"
      maildir_use_size_file
      maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
      maildir_format
      maildir_tag = ,S=$message_size
      quota_size_regex = ,S=(\d+)
      mode = 0660
      quota = "${if exists{${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/etc/${domain}/quota} {${lookup{$local_part}lsearch*{${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/etc/${domain}/quota}{$value}}} {}}"
      quota_is_inclusive = false
      quota_directory = "${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/mail/${domain}/${local_part}"
      return_path_add
      user = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      group = ${extract{3}{:}{${lookup passwd{${lookup{$domain}lsearch* {/etc/userdomains}{$value}}}{$value}}}}
    
    
    
    virtual_userdelivery:
      driver = appendfile
      delivery_date_add
      envelope_to_add
      directory = "${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/mail/${domain}/${local_part}"
      maildir_use_size_file
      maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
      maildir_format
      maildir_tag = ,S=$message_size
      quota_size_regex = ,S=(\d+)
      mode = 0660
      quota = "${if exists{${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/etc/${domain}/quota} {${lookup{$local_part}lsearch*{${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/etc/${domain}/quota}{$value}}} {}}"
      quota_is_inclusive = false
      quota_directory = "${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/mail/${domain}/${local_part}"
      return_path_add
      user = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      group = ${extract{3}{:}{${lookup passwd{${lookup{$domain}lsearch* {/etc/userdomains}{$value}}}{$value}}}}
      shadow_condition = ${if exists {${extract{5}{:}{${lookup passwd{${lookup{$domain}lsearch*{/etc/userdomains}{$value}}}{$value}}}}/.cpanel/rim/bis/$local_part@$domain}{1}{0}}
      shadow_transport = rim_bis_notifier_virtual_user
    
    
    rim_bis_notifier_virtual_user:
      driver = pipe
      headers_only
      command = /usr/local/cpanel/bin/rim_bis_notifier "${local_part}@${domain}"
      user = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      group = ${extract{3}{:}{${lookup passwd{${lookup{$domain}lsearch* {/etc/userdomains}{$value}}}{$value}}}}
      log_output = true
      current_directory = "/tmp"
      return_fail_output = true
      return_path_add = false
    
    
    address_reply:
    driver = autoreply
    
    
    archiver_incoming_local_user_method:
      driver = appendfile
      delivery_date_add
      envelope_to_add
      user = $local_part
      group = ${extract{3}{:}{${lookup passwd{$local_part}{$value}}}}
      directory = "${extract{5}{::}{${lookup passwd{$local_part}{$value}}}}/mail/archive/${perl{get_incoming_domain}}/.incoming.${perl{YYYYMMDDGMT}}"
      maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
      maildir_format
      maildir_tag = ,S=$message_size
      maildir_use_size_file
      quota_size_regex = ,S=(\d+)
      mode = 0660
      return_path_add
    
    
    archiver_incoming_domain_method:
      driver = appendfile
      delivery_date_add
      envelope_to_add
      user = "${lookup{$domain}lsearch* {/etc/userdomains}{$value}}"
      group = ${extract{3}{:}{${lookup passwd{${lookup{$domain}lsearch* {/etc/userdomains}{$value}}}{$value}}}}
      directory = "$home/mail/archive/$domain/.incoming.${perl{YYYYMMDDGMT}}"
      maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
      maildir_format
      maildir_tag = ,S=$message_size
      maildir_use_size_file
      quota_size_regex = ,S=(\d+)
      mode = 0660
      return_path_add
    
    
    archiver_outgoing:
      driver = appendfile
     delivery_date_add
      envelope_to_add
      user = ${perl{get_outgoing_sender_sysuser}}
      group = ${extract{3}{:}{${lookup passwd{${perl{get_outgoing_sender_sysuser}}}{$value}}}}
      directory = "${extract{5}{::}{${lookup passwd{${perl{get_outgoing_sender_sysuser}}}{$value}}}}/mail/archive/${perl{get_outgoing_sender_domain}}/.${perl{get_outgoing_archive_directory}}.${perl{YYYYMMDDGMT}}"
      maildir_quota_directory_regex = ^(?:cur|new|\.(?!Trash$)[^\@]+)$
      maildir_format
      maildir_tag = ,S=$message_size
      maildir_use_size_file
      quota_size_regex = ,S=(\d+)
      mode = 0660
      return_path_add
     
  2. cPanelMichael

    cPanelMichael Forums Analyst
    Staff Member

    Joined:
    Apr 11, 2011
    Messages:
    30,723
    Likes Received:
    660
    Trophy Points:
    113
    cPanel Access Level:
    Root Administrator
    Hello :)

    Please ensure that any custom changes you make to the Exim configuration are completed through:

    "WHM Home » Service Configuration » Exim Configuration Manager » Advanced Editor"

    This will ensure the changes are preserved. Note that you may need to consult with the support for the application you are using for assistance with the exact changes you are required to make.

    Thank you.
     
Loading...

Share This Page