PDA

Bekijk Volledige Versie : Direct Admin, Exim en Exchange



Valcuo
19/04/11, 14:15
Beste WHT-ers,

Ik zit met het volgende al enige dagen vast.
Ik heb een domein waarachter 10 e-mail adressen zitten.
Hiervan zijn er 8 actief op de webserver, dit zijn gewone POP3 boxen via Direct Admin aangemaakt.

Die andere 2 e-mail adressen zijn van hetzelfde domein, echter draaien deze op een externe Exchange 2010 server.

Nu wil ik Exim op CentOS zodanig instellen dat deze bij het binnenkomen van mail controleert of dit adres lokaal op de server bestaat, zo niet dan moet het doorgestuurd worden naar de externe Exchange server.

Heb dit probleem ook al gemeld op de mailinglist van Exim, echter komen ze daar met oplossingen die niet door mijzelf te realiseren zijn gezien de kennis van Exim en Active Directory query's.

Nu vraag ik me af of het volgende niet mogelijk is:
Ik maak in de exim.conf een lijst aan van adressen die doorgestuurd moeten worden naar de externe Exchange server, bijvoorbeeld:

adres1@domein.nl
adres2@domein.nl

Die zet ik zelf hardcoded in de exim.conf, en worden doorgestuurd naar de exchange. Alle andere adressen worden gewoon lokaal op de (web)server afgehandeld.

Hoop dat iemand mij verder kan helpen hiermee...

ju5t
19/04/11, 14:48
Onder je routers:


manual_route:
transport = exchange_smtp
driver = manualroute
condition = ${if eq {}{${if exists{/etc/virtual/${domain}/passwd}{${lookup{$local_part}lsearch{/etc/virtual/${domain}/passwd}}}}}{yes}{no}}
route_data = exchange IP adres, kun je uiteraard ook met lsearch doen op basis van domein


Onder transports:

exchange_smtp:
driver = smtp

Volgens mij moet je hier mee een aardige stap in de juiste richting gaan.

Valcuo
19/04/11, 16:49
Mijn router lijst ziet er nu als volgt uit:

lookuphost:
driver = dnslookup
domains = ! +local_domains
ignore_target_hosts = 127.0.0.0/8
condition = "${perl{check_limits}}"
transport = remote_smtp
no_more

manual_route:
transport = exchange_smtp
driver = manualroute
condition = ${if eq {}{${if exists{/etc/virtual/${domain}/passwd}{${lookup{$local_part}lsearch{/etc/virtual/${domain}/passwd}}}}}{yes}{no}}
route_data = xxx.xxx.xxx.xxx

Zoals je dus voorstelde, echter heb ik nu hetzelfde effect als eerder met een andere router die ik reeds had gemaakt.
Alle e-mail wordt doorgestuurd naar de Exchange, de adressen die daar niet bestaan krijg ik dan weer netjes terug met de melding dat ze niet bezorgd konden worden.

Heb zelf ook handmatig nog gecontroleerd dat de e-mail adressen inderdaad in de passwd lijst voorkomen, dit is uiteraard zo.

Valcuo
21/04/11, 11:19
Indien iemand me kan helpen met dit probleem dan heb ik hier graag wat geld voor over. Het lijkt me zo eenvoudig, echter heb ik geen kennis van Exim om het voor elkaar te krijgen.
Het mag gewoon opgelost worden door de betreffende Exchange accounts hard-coded in de exim.conf te zetten.

Ik ben nu te lang bezig met dit probleem, heb tevens verschillende voorstellen geprobeerd vanuit de Exim maillinglist maar zonder kennis gaat het gewoon niet lukken.
Hopelijk is er iemand die me hiermee verder kan helpen...

Mikey
21/04/11, 11:45
Mijn router lijst ziet er nu als volgt uit:

lookuphost:
driver = dnslookup
domains = ! +local_domains
ignore_target_hosts = 127.0.0.0/8
condition = "${perl{check_limits}}"
transport = remote_smtp
no_more

manual_route:
transport = exchange_smtp
driver = manualroute
condition = ${if eq {}{${if exists{/etc/virtual/${domain}/passwd}{${lookup{$local_part}lsearch{/etc/virtual/${domain}/passwd}}}}}{yes}{no}}
route_data = xxx.xxx.xxx.xxx

Zoals je dus voorstelde, echter heb ik nu hetzelfde effect als eerder met een andere router die ik reeds had gemaakt.
Alle e-mail wordt doorgestuurd naar de Exchange, de adressen die daar niet bestaan krijg ik dan weer netjes terug met de melding dat ze niet bezorgd konden worden.

Heb zelf ook handmatig nog gecontroleerd dat de e-mail adressen inderdaad in de passwd lijst voorkomen, dit is uiteraard zo.

En toch voelt dit als ik het zo bekijk als een halve oplossing die op termijn voor problemen gaat zorgen. Je routeert namelijk alles wat niet op je server staat naar de exchange. Dus ook alle spam etc etc etc wat binnen komt.

Mikey
21/04/11, 12:19
Indien iemand me kan helpen met dit probleem dan heb ik hier graag wat geld voor over. Het lijkt me zo eenvoudig, echter heb ik geen kennis van Exim om het voor elkaar te krijgen.
Het mag gewoon opgelost worden door de betreffende Exchange accounts hard-coded in de exim.conf te zetten.

Ik ben nu te lang bezig met dit probleem, heb tevens verschillende voorstellen geprobeerd vanuit de Exim maillinglist maar zonder kennis gaat het gewoon niet lukken.
Hopelijk is er iemand die me hiermee verder kan helpen...



probeer eens iets zoals onderstaand.

manual_route:
driver = manualroute
domains = +custom_local_domains
transport = remote_smtp
route_list = * <exchangeip>
local_parts = /etc/exchange
unseen = true

in /etc/exchange zet je de users zonder domein die doorgestuurd moeten worden, elke user op nieuwe line.
custom_local_domains moet je nog definieren.

Valcuo
21/04/11, 14:34
Ik heb de router als volgt geprobeerd:

manual_route:
driver = manualroute
domains = domeinnaam.nl
transport = remote_smtp
route_list = * 123.123.123.123
local_parts = /etc/exchange
unseen = true

Ik heb de domeinnaam even rechtstreeks achter de domains gezet. Zou volgens mij niet moeten uitmaken of wel?
Verder heb ik /etc/exchange aangemaakt met daarin info op de eerste regel en administratie op de tweede regel. Dit zijn de 2 boxen die op de exchange staan.

Verder heb ik in Direct Admin aangevinkt dat de lokale server de e-mail moet afhandelen en heb ik een mx record mail aangemaakt met waarde 10. Verder zijn er geen records aanwezig.

Heb de router, voor en na de router die reeds aanwezig is geplaatst. Beide keren werkt het niet. De router die standaard al in exim.conf staat ziet er als volgt uit:

lookuphost:
driver = dnslookup
domains = ! +local_domains
ignore_target_hosts = 127.0.0.0/8
condition = "${perl{check_limits}}"
transport = remote_smtp
no_more

Mikey
21/04/11, 15:52
Durf niet precies te zeggen of je domein zo op mag geven. Maar zou het in ieder geval op deze manier zoeken. Daarmee voorkom je dus dat alle mail die niet op je server hoort ook bij de exchange afgeleverd wordt.

Wat je nog ken testen is door middel van debug het hele transport door exim laat printen in je console. Kun je in ieder geval zien wat en waar gebeurd en of er ergens een steek gemist wordt.

exim -d -bt localpart@virtualhost