exim mit mehreren smart_relays

Post Reply
Message
Author
User avatar
killerhippy
Posts: 529
Joined: 19. May 2000 19:36
Contact:

exim mit mehreren smart_relays

#1 Post by killerhippy »

Hi,

leider konnte ich bisher mein aktuelles Problem nicht selbst loesen, daher frage ich einmal:

Das verwenden _eines_ smart_relay hosts ist ja gut dokumentiert und funktioniert auch, aber wie macht man das, wenn man zwei smart_relay hosts fuer verschiedene User hat?

local user foo soll \domain.net als linus.person@domain.net verwenden.
local user bar soll \nette.domain als alias.linux@nette.domain verwenden.

Dazu ist eine rewrite rule notwendig, um den lokalen Usernamen auf den Account beim eMailprovider abzubilden:

Code: Select all

begin rewrite
foo@local.lan   linus.person@domain.net
bar@local.lan   alias.linux@nette.domain
Soweit geht das klar. Exim neu gestartet und testen mit

Code: Select all

exim -brw foo@local.lan
bringt die gewuenschten rewrites.... die ich mir uebrigens auch sparen koennte, wenn ich z.B. mutt fuer den user foo in seiner ~/.muttrc anweise,

Code: Select all

set hostname domain.net
send-hook '*' 'my_hdr From: linus.person@domain.net
zu setzen.

Nun haben aber foo und bar bei ihren beiden eMailservern verschiedene Akkounts mit unterschiedlichen Passwoertern um das relaying auf diesen eMailservern hin zu kriegen.
Wie erstelle ich nun zwei verschiedene rules "smart_relay", die in Abhaengigkeit des Users die eMail unter Verwendung des dazugehoerigen Login/Passwortes versenden?
Es gibt keine dumme Fragen!

Killerhippy

User avatar
killerhippy
Posts: 529
Joined: 19. May 2000 19:36
Contact:

doch gefunden

#2 Post by killerhippy »

Hi,

for the records:

Code: Select all

/etc/exim/exim.conf


######################################################################
#                  Runtime configuration file for Exim               #
######################################################################
[...]
# The next three settings create two lists of domains and one list of hosts.
# These lists are referred to later in this configuration using the syntax
# +local_domains, +relay_to_domains, and +relay_from_hosts, respectively. They
# are all colon-separated lists:

[...]

domainlist host_treat_as_local = freemail.de:gmx.de

[...]

######################################################################
#                      ROUTERS CONFIGURATION                         #
#               Specifies how addresses are handled                  #
######################################################################
#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!       #
# An address is passed to each router in turn until it is accepted.  #
######################################################################

begin routers

# send mail from @freenet.de via smtp.freemail.de
smarthost_route_freemail:
  condition = ${if eq {${lc:$sender_address_domain}} {freenet\.de} {true} fail}
  driver = manualroute
  domains =!+local_domains
  transport = remote_smtp
  route_list = * smtp.freemail.de
  no_more
 
# send mail from @gmx.de via mail.gmx.de
smarthost_route_gmx:
  condition = ${if eq {${lc:$sender_address_domain}} {gmx\.de} {true} fail}
  driver = manualroute
  domains =!+local_domains
  transport = remote_smtp
  route_list = * mail.gmx.de
  no_more
 
[...]

######################################################################
#                      TRANSPORTS CONFIGURATION                      #
######################################################################
#                       ORDER DOES NOT MATTER                        #
#     Only one appropriate transport is called for each delivery.    #
######################################################################

# A transport is used only when referenced from a router that successfully
# handles an address.

begin transports


# This transport is used for delivering messages over SMTP connections.

remote_smtp:
  driver = smtp
  hosts_try_auth = smtp.freenet.de:mail.gmx.de

[...]

######################################################################
#                      REWRITE CONFIGURATION                         #
######################################################################

begin rewrite

#                                                {$value}fail} bcfrF
# welche der Optionen gewünscht sind oder gebraucht werden hängt vom relaying host ab

user1@myhost.home.lan                           fabelname@freemail.de
user1@home.lan                                  fabelname@freemail.de
user2@myhost.home.lan                           Herr.Name@gmx.de Ffrs
user2@home.lan                                  Herr.Name@gmx.de Ffrs


######################################################################
#                   AUTHENTICATION CONFIGURATION                     #
######################################################################

begin authenticators

# die angegebenen Dateien brauchen folgende Rechte:
# -rw-------  1 mail mail
# sonst kann exim sie nicht lesen, siehe /var/log/exim/exim_main.log

cram_md5:
  driver = cram_md5
  public_name = CRAM-MD5
  client_name = "${extract{user}{${lookup{$sender_address}lsearch{/etc/exim/cram_md5_pwd}}}}" 
  client_secret = "${extract{pass}{${lookup{$sender_address}lsearch{/etc/exim/cram_md5_pwd}}}}"

fixed_plain:
  driver = plaintext
  public_name = PLAIN
  client_send = "${lookup{$sender_address}lsearch{/etc/exim/plaintext_pwd}{$value} fail}" 

# End of Exim configuration file


/etc/exim/cram_md5_pwd
#--------------- Syntax in der /etc/exim/cram_md5_pwd ----------------#
# Mailadresse:          user=Mailboxkennung     pass=Zugangskennung
Herr.Name@gmx.de        user=this_user          pass=his_password
fabelname@freenet.de    user=that_user          pass=her_password
#---------------------------------------------------------------------#

/etc/exim/plaintext_pwd
#--------------- Syntax in der /etc/exim/plaintext_pwd ---------------#
# Mailadresse:                  ^Mailboxkennung^Zugangskennung
#user@provider.de:              ^user^pass
Herr.Name@gmx.de:               ^this_user^his_password
fabelname@freenet.de:           ^that_user^her_password
#---------------------------------------------------------------------#
Für die Veröffentlichung sind die domains nur als Beispiele zu sehen und die Usernamen samt Passwörtern frei erfunden.

Erfolgreich getestet mit exim v4.34

cram_md5 wird nur bei Mailservern verwendet, die dies unterstuetzen und ist kein Problem bei denen, die das nicht können, da dies im handshake ausgehandelt wird AFAIK.
Es gibt keine dumme Fragen!

Killerhippy

User avatar
killerhippy
Posts: 529
Joined: 19. May 2000 19:36
Contact:

Nachtrag für emails an root via /etc/alias

#3 Post by killerhippy »

Hallo,

eine Kleinigkeit ist noch zu erwähnen.

Wenn in /etc/alias der root alias auf einen usernamen gerichtet ist, der in der exim.conf von einer rewrite-roule und smart-route betroffen ist, werden emails an root nicht mehr lokal zugestellt, sondern ueber den relaying host - mit mehr oder weniger Erfolg abhängig von der Konfiguration des relaying hosts.

Das möchte man natürlich nicht und die einfache Lösung ist, dass man in /etc/alias den alias für root auf <local_username>@localhost setzt. Damit werden die Mails wieder lokal und erfolgreich zugestellt.
Es gibt keine dumme Fragen!

Killerhippy

Post Reply