[Exim4] SMTP server van provider als smarthost

Pagina: 1
Acties:
  • 119 views sinds 30-01-2008
  • Reageer

  • Mitrilvich
  • Registratie: Juli 2004
  • Laatst online: 19-01 00:24
Ik heb een debian server draaien met met Exim4. Deze server host een paar sites en moet voornamelijk mail die vanuit php-applicaties doorsturen naar de smtp-server van mijn provider. Ik wil dus deze smtp-server gebruiken als smarthost. De instellingen daarvoor heb ik al eens eerder gemaakt en de gewenst configuratie heeft toen ook gewerkt.

Sinds vandaag kom ik er achter dat exim niet meer de (juiste) username en password gebruikt die ingesteld zijn om gebruik te kunnen maken van de smtp server van mijn provider. In het logboek van de server staan de volgende regels:
code:
1
2
3
2007-02-13 23:27:45 1HH67l-0001dq-Vm <= www-data@dinges.hopto.org U=www-data P=local S=447
2007-02-13 23:27:48 1HH67l-0001dq-Vm ** gebruiker@gmail.com R=smarthost T=remote_smtp_smarthost: SMTP error from remote mail server after RCPT TO:<gebruiker@gmail.com>: host mail.onsneteindhoven.nl [212.29.160.4]: 550 5.7.1 <gebruiker@gmail.com>... Relaying denied. Proper authentication required.
2007-02-13 23:27:48 1HH67o-0001dt-3S <= <> R=1HH67l-0001dq-Vm U=Debian-exim P=local S=1475

Voor de configuratie van Exim heb ik het volgende toegevoegd/aangepast:

code: passwd.client
1
*:smtp_username:smtp_password


Hier zijn alleen wat blokken uit-gecommenteerd
code: exim4.conf.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
plain_server:
  driver = plaintext
  public_name = PLAIN
  server_condition = "${if crypteq{$auth3}{${extract{1}{:}{${lookup{$auth2}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
  server_set_id = $auth2
  server_prompts = :
  .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
  server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
  .endif

# LOGIN authentication has traditional prompts and responses. There is no
# authorization ID in this mechanism, so unlike PLAIN the username and
# password are $auth1 and $auth2. Apart from that you can use the same
# server_condition setting for both authenticators.


login_server:
  driver = plaintext
  public_name = LOGIN
  server_prompts = "Username:: : Password::"
  server_condition = "${if crypteq{$auth2}{${extract{1}{:}{${lookup{$auth1}lsearch{CONFDIR/passwd}{$value}{*:*}}}}}{1}{0}}"
  server_set_id = $auth1
  .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS
  server_advertise_condition = ${if eq{$tls_cipher}{}{}{*}}
  .endif


code: update-exim4.conf.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AUTH_SERVER_ALLOW_NOTLS_PASSWORDS='true'
dc_eximconfig_configtype='smarthost'
dc_other_hostnames='dinges.hopto.org'
dc_local_interfaces='127.0.0.1'
dc_readhost='dinges.hopto.org'
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='mail.onsneteindhoven.nl'
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

De smtp-server van mijn provider vereist dus een wachtwoord welke niet ge-encrypt moet zijn. Als ik het test met Outlook (met dezelfde instellingen) accepteerd de smtp server de mail wel, ook als ik het verstuur onder een ander e-mail adres dan die van het domein van mijn provider, daaorm denk ik dat het probleem niet bij mijn provider maar bij exim ligt.

Wat zie ik over het hoofd? Welke instelling mist exim om de smtp-server van mijn provider te kunnen gebruiken als smart-host?

(Ik heb al gezocht met google, de man-pages van exim, en op got.)

[ Voor 8% gewijzigd door Mitrilvich op 13-02-2007 23:29 . Reden: Vergeten spul / Logboek gegevens juist gemaakt ]


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Om welke server gaat 't? Oh ik zie 't al. Die server wil idd gewoon PLAIN login hebben en doet zo te zien niet aan STARTTLS (slecht!).


In je config zitten zo te zien geen opties om een servernaam en een username/password uit een file te trekken ingeval de authenticator als client gebruikt wordt. Dat zijn opties die met client_ beginnen. Dus of je hebt nog ergens anders een authenticator met client_ opties, of je hebt nooit smtp auth gedaan en je smarthost is 't opeens gaan verwachten van je.

[ Voor 215% gewijzigd door CyBeR op 13-02-2007 23:31 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Mitrilvich
  • Registratie: Juli 2004
  • Laatst online: 19-01 00:24
CyBeR schreef op dinsdag 13 februari 2007 @ 23:18:
Het stuk config dat je net gepaste hebt heeft alleen te maken met exim's authenticatie als die als server optreedt.
Klopt, was het belangrijkste vergeten: "update-exim4.conf.conf"

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

(Voor het geval je naar reply counts kijkt, ik heb m'n post dus flink ge-edit :P)

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Mitrilvich
  • Registratie: Juli 2004
  • Laatst online: 19-01 00:24
CyBeR schreef op dinsdag 13 februari 2007 @ 23:18:
In je config zitten zo te zien geen opties om een servernaam en een username/password uit een file te trekken ingeval de authenticator als client gebruikt wordt. Dat zijn opties die met client_ beginnen. Dus of je hebt nog ergens anders een authenticator met client_ opties, of je hebt nooit smtp auth gedaan en je smarthost is 't opeens gaan verwachten van je.
Als het goed is wordt standaard passwd.client uitgelezen indien aanwezig, bij een schone installatie is die ook leeg (afgezien van comments). Ik heb geen "client_" opties gevonden in de configuratie bestanden (wel een 2-tal var-names in het script maar niet van betekenis). Als ik het bestand passwd.client chmod naar 000 krijg ik de volgende melding:
code: logboek
1
2007-02-14 00:03:24 1HH6gE-0001jD-6j failed to expand "${if exists{/etc/exim4/passwd.client} {${lookup{$host}nwildlsearch{/etc/exim4/passwd.client}{$host_address}}}{} }" while checking a list: failed to open /etc/exim4/passwd.client for linear search: Permission denied (euid=102 egid=102)

waardoor ik zeker weet dat deze uitgelezen wordt (wanneer de rechten goed staan natuurlijk).
CyBeR schreef op dinsdag 13 februari 2007 @ 23:36:
(Voor het geval je naar reply counts kijkt, ik heb m'n post dus flink ge-edit :P)
Tanx voor je input :)

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Hrm.
Ik heb even een eigen debian conffile erbij gezet, en mijn PLAIN authenticator daarin ziet er zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
plain:
  driver = plaintext
  public_name = PLAIN
.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
  client_send = "${if !eq{$tls_cipher}{}{\
                     ^${extract{1}{::}\
                       {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}\
                     ^${extract{2}{::}\
                       {${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}\
                   }fail}"
.else
  client_send = "^${extract{1}{::}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}^${extract{2}{::}{${lookup{$host}lsearch*{CONFDIR/passwd.client}{$value}fail}}}"
.endif


Daarin wordt ook echt een passwd.client doorzocht op een passende naam en paswoord. Wel eventjes 'AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS' op true zetten, anders wil 'ie er niet aan omdat je smarthost geen tls ondersteunt.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Mitrilvich
  • Registratie: Juli 2004
  • Laatst online: 19-01 00:24
Hij doet het!

Net onder het "plain:" blok staat het volgende:
code: exim4.conf.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
login:
  driver = plaintext
  public_name = LOGIN
# .ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
#   # Return empty string if not non-TLS AND looking up $host in passwd-file
#   # yields a non-empty string; fail otherwise.
#   client_send = "<; ${if and{\
#                        {!eq{$tls_cipher}{}}\
#                        {!eq{PASSWDLINE}{}}\
#                       }\
#                    {}fail}\
#                  ; ${extract{1}{::}{PASSWDLINE}}\
#                  ; ${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
# .else
  # Return empty string if looking up $host in passwd-file yields a
  # non-empty string; fail otherwise.
  client_send = "<; ${if !eq{PASSWDLINE}{}\
                      {}fail}\
                 ; ${extract{1}{::}{PASSWDLINE}}\
                 ; ${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
# .endif

De extra comment is van mij, ik comment dus gewoon het tls gedeelte uit. Op de een of andere manier pakt ie de waarde van AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS niet meer. Ik heb deze waarde op true gezet bovenaan in 2 bestanden.
code: exim4.conf.template / update-exim4.conf.conf
1
AUTH_SERVER_ALLOW_NOTLS_PASSWORDS='true'

Ik snap niet waarom ie deze waardes niet pakt, maar ben al blij dat het weer werkt :)
Ik heb zelf het vermoeden dat een update het een en ander in war heeft gestuurd.

CyBeR bedankt! _/-\o_

  • tomato
  • Registratie: November 1999
  • Niet online
Mitrilvich schreef op woensdag 14 februari 2007 @ 08:04:
Op de een of andere manier pakt ie de waarde van AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS niet meer. Ik heb deze waarde op true gezet bovenaan in 2 bestanden.
code: exim4.conf.template / update-exim4.conf.conf
1
AUTH_SERVER_ALLOW_NOTLS_PASSWORDS='true'

Ik snap niet waarom ie deze waardes niet pakt, maar ben al blij dat het weer werkt :)
Als je zelf gaat zitten wroeten in de Exim configuratie op Debian moet je daarna even
code:
1
/usr/sbin/update-exim4.conf
uitvoeren.

Zie ook
code:
1
man update-exim4.conf

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

tomato schreef op woensdag 14 februari 2007 @ 10:02:
[...]

Als je zelf gaat zitten wroeten in de Exim configuratie op Debian moet je daarna even
code:
1
/usr/sbin/update-exim4.conf
uitvoeren.

Zie ook
code:
1
man update-exim4.conf
Neh, dat doet het init.d script ook voor je als je exim (re)start. :)

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Mitrilvich
  • Registratie: Juli 2004
  • Laatst online: 19-01 00:24
tomato schreef op woensdag 14 februari 2007 @ 10:02:
[...]
Als je zelf gaat zitten wroeten in de Exim configuratie op Debian moet je daarna even
[...]
CyBeR schreef op woensdag 14 februari 2007 @ 11:03:
[...]
Neh, dat doet het init.d script ook voor je als je exim (re)start. :)
Oh... ok, ik deed beide, dus dat zal wel goed zitten :). Dan volstaat een restart van exim-service dus om de config toe te passen, mooi!

[ Voor 8% gewijzigd door Mitrilvich op 14-02-2007 11:13 ]

Pagina: 1