[exim] (ACL) 1 niet-bestaand sender adres toestaan

Pagina: 1
Acties:

  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 22-01 09:01

gvdh81

To got or not to got..

Topicstarter
Hallo, ik wil dat exim 1 bepaald adres van (al) mijn lokale domeinen toestaat als afzendadres. Ik heb het tot nu toe zo ver voor elkaar gekregen door veel te googlen en dit werkt gelukkig:

code:
1
2
3
accept sender_domains = +local_domains
    endpass
    verify = recipient


Maar ik wil dus niet dat "alle" afzendadressen worden toegestaan, enkel de afzenders met "noreply@..." lokale domeinen. Kan iemand me hiermee helpen?

Verwijderd

Wat je hier gedaan hebt kijkt naar het gedeelte achter de @ van de verzendende adressen, staan deze in "domainlist local_domains =" dan wordt de mail geaccept.

Als jij bijvoorbeeld "domainlist local_domains = localhost domein.nl" hebt, worden alle mails met "*@domein.nl" dus geaccepteerd.

Wat ik in dit geval zou doen is het volgende:

code:
1
2
3
4
accept sender_domains = +local_domains
      local_parts = noreply
      endpass
      verify = recipient


local_parts wordt gebruikt voor alles voor de @.
Ik weet niet zeker of dit werkt, dat hangt af van de plek waar je de ACL neerzet en wat er nog onder en boven staat, test even of je nu ook niet alle inkomende mail vastzet op noreply@.

Misschien een idee om je complete exim.conf te posten.
Het is misschien makkelijker om een aparte ACL te maken voor uitgaande mail.

Misschien ook een idee om uit te leggen waar je dit precies voor nodig hebt.
Ik neem aan dat je wil voorkomen dat iedereen je machine als uitgaande mailserver kan gebruiken, is in dat geval IP / SMTP authenticatie niet makkelijker?

Google is trouwens geen plek om dit soort dingen te zoeken, gebruik daarvoor de Exim documentation, die is echt heel uitgebreid. Misschien iets te uitgebreid zo op het eerste gezicht, maar als je eraan gewend bent kan je daar echt alles uithalen.
De Exim mailinglists zijn ook handig om voorbeelden van bepaalde configs op te zoeken.
Vaak zijn er al eerder mensen geweest die precies hetzelfde wilden als jij.

Zie:
http://www.exim.org/exim-html-4.60/doc/html/spec.html/
en
http://news.gmane.org/gmane.mail.exim.user

[ Voor 52% gewijzigd door Verwijderd op 31-12-2005 15:21 ]


  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 22-01 09:01

gvdh81

To got or not to got..

Topicstarter
Ja dat wil ik inderdaad, dat niet iedereen die bij mij hosting afneemt ook daadwerkelijk als iedereen kan mailen.

Is deze acl beter?
code:
1
2
3
                deny message = Invalid sender address, message frozen
                        domains = !+local_domains
                        !verify = sender

Voor zover ik kan lezen op de docs (bedankt voor de tip trouwens):
http://article.gmane.org/...4957/match=require+verify

Betekend dit; dat het bericht moet worden geweigerd als de afzender niet lokaal is en het afzendadres niet gevonden kan worden. Klopt dit?

Verwijderd

gvdh81 schreef op zaterdag 31 december 2005 @ 18:52:
Ja dat wil ik inderdaad, dat niet iedereen die bij mij hosting afneemt ook daadwerkelijk als iedereen kan mailen.

Is deze acl beter?
code:
1
2
3
                deny message = Invalid sender address, message frozen
                        domains = !+local_domains
                        !verify = sender

Voor zover ik kan lezen op de docs (bedankt voor de tip trouwens):
http://article.gmane.org/...4957/match=require+verify

Betekend dit; dat het bericht moet worden geweigerd als de afzender niet lokaal is en het afzendadres niet gevonden kan worden. Klopt dit?
Wat je hier doet is: elke mail met een domein achter de @ dat niet in local_domains staat, wordt geweigerd. Als je ergens een ! voor zet betekent dat: NIET.
Op deze manier kunnen dus inderdaad alleen mails verzonden en ontvangen worden als het gedeelte achter de @ ook daadwerkelijk in local_domains staat.

Die ! voor verify kan je beter weghalen.
Sender verify wil zeggen dat hij een DNS lookup op het @domein.tld gedeelte van de mail doet, als dat niet resolved weigert hij de mail. Op die manier krijg je dus alleen mail binnen van domeinen die daadwerkelijk bestaan.

  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 22-01 09:01

gvdh81

To got or not to got..

Topicstarter
Ow, ik dacht juist dat hij keek of de sender wel bestaat.

Ik wil het volgende:
- Graag een e-mail kunnen sturen dmv script vanuit noreply@mijndomein.nl (maar deze user bestaat niet).
- Mail die gereplyed wordt mag bouncen.

Nu heb ik het zo opgelost, maar dat klopt volgens mij ook niet helemaal.
Aangezien mijn exim.conf nogal (c) is kan ik alleen de acl posten:

# Start ACL rules.
begin acl
        # Recipient ACLs.
        acl_check_rcpt:
                accept hosts = :
                deny message = Restricted characters in address
                        domains = +local_domains
                        local_parts = ^[.] : ^.*[@%!/|]
                deny message = Restricted characters in address
                        domains = !+local_domains
                        local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
[b]                deny message = This address no longer accepts mail
                        domains = +local_domains
                        local_parts = noreply
                deny message = Sender verification failed
                        !hosts = 127.0.0.1
                        !verify = sender[/b]
                accept local_parts = postmaster
                        domains = +local_domains
                #require verify = sender (zie 1e deny hierboven)
                accept domains = +local_domains
                        endpass
                        verify = recipient
                accept domains = +relay_to_domains
                        endpass
                        verify = recipient
                accept hosts = +relay_from_hosts
                accept authenticated = *

                # Deny all other messages.
                deny message = Relay not permitted.


Het vetgedrukte gedeelte moet daarvoor zorgen.

Zoals ik het nu heb, mogen volgens mij alle afzendadressen, en ik wil dus eigenlijk alleen noreply toestaan (ivm anti-spam etc)

[ Voor 13% gewijzigd door gvdh81 op 31-12-2005 19:16 ]


Verwijderd

Wow.
Hahaha.
Je doet echt heel erg moeilijk om iets heel simpels.

Ik neem aan dat je script op de machine zelf staat?
In dat geval volstaat:
"hostlist relay_from_hosts = 127.0.0.1"

Op die manier kan je vanaf localhost (je script dus) email versturen met een willekeurig sender address. Het maakt niet uit dat de user niet bestaat, voor uitgaande mail wordt dat niet gechecked.
Mail terug wordt gewoon geweigerd met de melding dat die user niet bestaat.

Ik weet niet welke distro je gebruikt, maar dit werkt met de standaard Exim config als het goed is.

Dus dit is genoeg:
code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
begin acl

acl_check_rcpt:
 
#Staan er rare tekens in het adres? Ophoepelen.
deny    message       = Restricted characters in address
          domains       = +local_domains
          local_parts   = ^[.] : ^.*[@%!/|]

#Idem
 deny    message       = Restricted characters in address
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

#We kijken of het verzendende domein wel echt bestaat, we willen geen mail van sdfshdfsd.com
  require verify        = sender

#Als het @domein.tld in local_domains staat, accepteren we hem.
 accept  domains       = +local_domains
          endpass
#MAAR, pas als we gechecked hebben of de recipient ook echt op dit systeem bestaat
          verify        = recipient

#Als we relayen voor @domein.tld, omdat we bijvoorbeeld een backup mailserver zijn, accepteren we
  accept  domains       = +relay_to_domains
          endpass
#Maar wederom pas als we de ontvanger kunnen verifieren.
          verify        = recipient

#Als we relayen voor het IP adres waar de connectie vandaan komt, accepteren we ook.
#Zonder verdere checks op sender of recipient. 
#Dit is dus waar jouw mail mee verstuurd wordt.
accept  hosts         = +relay_from_hosts

#Als de connectie authenticated is, ingelogged via SMTP Auth dus, accepteren we ook zonder enige #verdere checks.
  accept  authenticated = *

#Alles wat nu nog niet door is wordt definitief geweigerd.
  deny    message       = relay not permitted, so get lost!

[ Voor 7% gewijzigd door Verwijderd op 31-12-2005 19:42 ]


  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 22-01 09:01

gvdh81

To got or not to got..

Topicstarter
Hmm, ik gebruik gentoo en exim voor uitgaande mail, d.w.z. sendmail is een alias naar exim. Voor zover ik weet doet een "require verify = sender" een check of het verzendadres wel bestaat, aangezien de mail van localhost komt, ziet hij dus dat de user niet bestaat...

  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 22-01 09:01

gvdh81

To got or not to got..

Topicstarter
ik geef het maar een bescheiden kickje...

@fabio-c, klopt bovenstaande acl die jij me gaf dan?

Verwijderd

gvdh81 schreef op maandag 02 januari 2006 @ 16:27:
ik geef het maar een bescheiden kickje...

@fabio-c, klopt bovenstaande acl die jij me gaf dan?
Je hebt inderdaad gelijk,
http://www.exim.org/exim-...l#SECTaddressverification
in het geval van localhost checked hij ook het localpart.

Dus je gebruikt gewoon de ACL die ik gaf, en in plaats van:

code:
1
require verify        = sender


gebruik je:

code:
1
2
require verify        = sender
hosts = !localhost


Hij doet dan alleen sender verifies op connecties die niet van localhost komen.
Zet ook je exim.conf eens online. Want met de standaard Gentoo exim.conf moet dit volgens mij gewoon werken.

[ Voor 8% gewijzigd door Verwijderd op 02-01-2006 17:04 ]


  • gvdh81
  • Registratie: Juli 2001
  • Laatst online: 22-01 09:01

gvdh81

To got or not to got..

Topicstarter
Ok, dan mis ik alleen nog het onderdeel dat enkel "noreply" mag versturen zonder verify. Wat betreft mijn complete exim.conf; zoals ik al zei, mijn complete e-mail systeem werkt via virtual users die in een mysql tabel staan, vandaar dat ik niet zomaar het vele werk wat mijn beheerder voor mij gedaan heeft online zetten, snappie...

Verwijderd

gvdh81 schreef op maandag 02 januari 2006 @ 17:20:
Ok, dan mis ik alleen nog het onderdeel dat enkel "noreply" mag versturen zonder verify. Wat betreft mijn complete exim.conf; zoals ik al zei, mijn complete e-mail systeem werkt via virtual users die in een mysql tabel staan, vandaar dat ik niet zomaar het vele werk wat mijn beheerder voor mij gedaan heeft online zetten, snappie...
Dat is niet zoveel werk om op te zetten hoor. :)
Voorbeelden staan gewoon in de Exim docs.
en anders:
http://www.google.com/sea...+exim+virtual+users+mysql

Maar in jouw geval is dan een hosts = !localhost regeltje onder de sender verify genoeg.

[ Voor 7% gewijzigd door Verwijderd op 02-01-2006 17:32 ]

Pagina: 1