De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

ULYSSIS mailsetup ULYSSIS weekend 19 september 2009 Wouter Horré Credits voor de setup: Bart Vanbrabant

Verwante presentaties


Presentatie over: "ULYSSIS mailsetup ULYSSIS weekend 19 september 2009 Wouter Horré Credits voor de setup: Bart Vanbrabant"— Transcript van de presentatie:

1 ULYSSIS mailsetup ULYSSIS weekend 19 september 2009 Wouter Horré wouter@ulyssis.org Credits voor de setup: Bart Vanbrabant bart@ulyssis.org

2 2 Inhoud ● Internet e-mail ● Overzicht ULYSSIS setup ● Inleiding postfix ● smtp.ulyssis.org/mail.ulyssis.org ● Andere machines

3 3 Het Internet mailsysteem

4 4 SMTP – Simple Mail Transfer Protocol $ telnet smtp.ulyssis.org 25 220 smtp.ulyssis.org ESMTP Postfix HELO jig.ulyssis.org 250 smtp.ulyssis.org MAIL FROM: wouter@ulyssis.org 250 2.1.0 Ok RCPT TO: wouter@ulyssis.org 250 2.1.5 Ok DATA 354 End data with.. 250 2.0.0 Ok: queued as CCCA71005B

5 5 RFC 822 (en opvolgers) ● Definieert formaat e-mail Headers (lege regel) Body ● Headers: naam header: waarde header ● Bekendste headers: from, to, date, subject, cc, bcc

6 6 Interactie SMTP en RFC 822 ● MAIL FROM en From zijn onafhankelijk ● RCPT TO en To,cc,bcc zijn onafhankelijk ● RFC 822 'Received' header: Received: from cavuit01.kulnet.kuleuven.be (cavuit01.kulnet.kuleuven.be [134.58.240.43]) by mx.google.com with ESMTP id 28si426813eyg.34.2009.05.14.11.27.00; Thu, 14 May 2009 11:27:00 -0700 (PDT) ● RFC 822 'Delivered-To' header

7 7 DNS MX ● Hoe weet mailserver waar mail naartoe moet? ● Mail eXchange records in DNS: $ dig +short -t MX wikipedia.org 10 mchenry.wikimedia.org. 50 lists.wikimedia.org. ● Fallback naar A record

8 8 Mail lezen ● POP: Post Office Protocol ● Mail downloaden naar pc ● IMAP: Internet Mail Access Protocol ● Mail beheren op server ● Directe toegang tot 'message store'

9 9 Message store ● Vele varianten ● Op UNIX vooral ● Mbox: 1 file, mails gescheiden door lege regel ● Maildir: 1 file/mail

10 10 Inhoud ● Internet e-mail ● Overzicht ULYSSIS setup ● smtp.ulyssis.org/mail.ulyssis.org ● Andere machines

11 11 ULYSSIS setup: zenden en ontvangen INTERNET CAV (KUL) ● Virus scan ● Spam filter ● Greylisting smtp.ulyssis.or g (cam) ● MTA ● MDA Other machines ● MTA ● MUA Message Store (fileserver) SMTP NFS SENDMAI L

12 12 ULYSSIS setup: MX $ dig -t MX ulyssis.org +short 10 CAVin.kuleuven.be. 20 smtp.ulyssis.student.kuleuven.be. 50 CAVin01.kuleuven.be. 50 CAVin02.kuleuven.be. 50 CAVin03.kuleuven.be.

13 13 ULYSSIS setup: lezen mail.ulyssis.org (cam) ● POP3s ● IMAPs Other machines ● MUA Message Store (fileserver) IMAPs/POP3s NFS INTERNET IMAPs/POP3s

14 14 Inhoud ● Internet e-mail ● Overzicht ULYSSIS setup ● Inleiding postfix ● smtp.ulyssis.org/mail.ulyssis.org ● Andere machines

15 15 Postfix: basisconcepten ● Pipe-and-filter (vgl. UNIX shell) ● Kleine onafhankelijke blokjes ● Doen elk een stukje ● Geven mail aan elkaar door (pipe) ● Lookup tables ● (key,value) ● Geïndexeerde file, ldap, sql, regexp... ● Configuratie file (/etc/postfix/main.cf)

16 16 Postfix: mail ontvangen

17 17 Postfix: mail versturen

18 18 Postfix: lookup tables ● Standaard voorbeeld: /etc/aliases root: wouter postmaster: wouter hostmaster: wouter ● Wordt gebruikt door local-daemon ● Ook andere daemons gebruiken lookup tables voor allerlei doeleinden

19 19 Inhoud ● Internet e-mail ● Overzicht ULYSSIS setup ● Inleiding postfix ● smtp.ulyssis.org/mail.ulyssis.org ● Andere machines

20 20 Postfix: basics # wie zijn we myhostname = smtp.ulyssis.org # wat is ons hoofddomein mydomain = ulyssis.org # vanwaar komt lokale mail zonder domein? myorigin = cam.intern.ulyssis.org # op welke interfaces luisteren we inet_interfaces = all # lijst van 'vertrouwde' clients (bepaalt o.a. wie uitgaande mail mag versturen langs ons) mynetworks = 192.168.0.0/24, 127.0.0.0/8, 193.190.253.192/26, 10.48.10.0/24

21 21 Postfix: basics ctd. # voor welke domeinen zijn we eindbestemming # (virtuele domeinen = aliases (zie later)) mydestination = ulyssis.org, studentenweb.org, ulyssis.be, ulyssis.student.kuleuven.be, ulyssis.student.kuleuven.ac.be, cam.intern.ulyssis.org # mail die we niet zelf kunnen afleveren -> # smtp.kuleuven.be ([] om MX lookup te vermijden) relayhost = [smtp.kuleuven.be] # bestemming niet gekend -> reject met code 550 unknown_local_recipient_reject_code = 550 # welke checks bij RCPT TO smtpd_recipient_restrictions = permit_mynetworks reject_unauth_destination reject_unknown_recipient_domain reject_unverified_recipient

22 22 Postfix: basics ctd. # laat gebruikers toe om user+iets@domein.tld te # gebruiken recipient_delimiter = + # zet mail standaard in een Maildir in de home # directory home_mailbox = Maildir/ # beschouw mails van andere ULYSSIS machines als # lokale mail bij het herschrijven van headers # (nodig voor canonical_maps, masquerading,...) local_header_rewrite_clients = permit_mynetworks, permit_inet_interfaces

23 23 Postfix: masquerading # herschrijf iets.ulyssis.org naar ulyssis.org, # behalve lists.ulyssis.org masquerade_domains = !lists.ulyssis.org ulyssis.org # herschrijf zowel envelop als headers # herschrijf zowel zender als ontvanger masquerade_classes = envelope_sender, envelope_recipient, header_sender, header_recipient # herschrijf root niet -> wordt met # canonical herschreven naar root- # machine@ulyssis.org masquerade_exceptions = root

24 24 Postfix: standaardvormen # herschrijf bepaalde adressen naar een # standaardvorm canonical_maps = regexp:/etc/postfix/root_canonical, regexp:/etc/postfix/leuvenblogt_canonical root_canonical: /^root@([a-z]+)(.intern)?.ulyssis.org/ root- $1@ulyssis.org leuvenblogt_canonical: /^leuvenblogt(.*)@lists.ulyssis.org/ leveninleuven$1@lists.ulyssis.org

25 25 Postfix: aliases # Waar zijn aliases voor domeinen in # 'mydestination' te vinden alias_maps = hash:/etc/aliases, ldap:/etc/postfix/ldap-local_alias.cf # Welke file moet gehasht worden met 'newaliases' alias_database = hash:/etc/aliases ldap-local_alias.cf: server_host = (...) search_base = dc=ulyssis,dc=org scope = sub query_filter = (&(objectClass=JammMailAlias)(mail=%s)(accountA ctive=TRUE)(mailsource=local)) result_attribute = maildrop bind = no

26 26 Postfix: aliases ● Voorbeeld: ldapsearch -x -h ldapr.intern.ulyssis.org -b dc=ulyssis,dc=org "(&(objectClass=JammMailAlias)(mail=wouter)(acc ountActive=TRUE)(mailsource=local))" maildrop # wouter, wouter, Bosses, ulyssis.org dn: mail=wouter,uid=wouter,ou=Bosses,dc=ulyssis,dc=org maildrop: wouter@horre.be

27 27 Postfix: virtuele domeinen # Voor welke bijkomende domeinen ontvangen # we nog mail # dit zijn 'virtuele' domeinen, dwz er zijn enkel # aliasen, lokaal afleveren -> alias naar adres # in een domein in 'mydestination' # # Dit is een voorbeeld van een lookup table # die gebruikt wordt als list virtual_alias_domains = ldap:/etc/postfix/ldap- virtual_domain.cf # Welke aliases zijn er op die domeinen virtual_alias_maps = ldap:/etc/postfix/ldap- virtual_alias.cf

28 28 Postfix: virtuele domeinen ldap-virtual_domain.cf: server_host = (...) search_base = dc=ulyssis,dc=org query_filter = (&(objectClass=JammVirtualDomain)(jvd=%s)(accou ntActive=TRUE)(delete=FALSE)) result_attribute = jvd bind = no scope = sub ldapsearch -x -h ldapr.intern.ulyssis.org -b dc=ulyssis,dc=org "(&(objectClass=JammVirtualDomain)(jvd=veto.be)(acc ountActive=TRUE)(delete=FALSE))" jvd dn: jvd=veto.be,uid=veto,ou=Orgs,dc=ulyssis,dc=org jvd: veto.be

29 29 Postfix: virtuele domeinen ldap-virtual_alias.cf: (...) query_filter = (&(objectClass=JammMailAlias)(mail=%s)(accountA ctive=TRUE)) result_attribute = maildrop (...) ldapsearch -x -h ldapr.intern.ulyssis.org -b dc=ulyssis,dc=org " (&(objectClass=JammMailAlias)(mail=veto@veto.b e)(accountActive=TRUE)) " maildrop dn: mail=veto@veto.be,jvd=veto.be,uid=veto,ou=Orgs,dc=u lyssis,dc=org maildrop: veto@ulyssis.org maildrop: jeroen@veto.be maildrop: maud@veto.be

30 30 Postfix: lists # We zijn relay voor mail naar lists.ulyssis.org # relay == doorgeefluik relay_domains = lists.ulyssis.org # Geef een mail door aan mailman (*) met # slechts 1 bestemming tegelijk mailman_destination_recipient_limit = 1 # Aan wie/wat geven we mail door (fallback naar # 'relayhost') transport_maps = hash:/etc/postfix/transport /etc/postfix/transport: lists.ulyssis.org mailman:

31 31 Postfix: lists (*) /etc/postfix/master.cf definieert de processen van postfix + externe transports waar postfix mee interageert. Toevoeging voor mailman: mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} (allemaal op 1 lijn)

32 32 Dovecot ● Dovecot verzorgt POP3s en IMAPs ● Vrij standaard config # Welke protocollen protocols = imaps pop3s # Waar luisteren protocol imap { ssl_listen = 193.190.253.235 } protocol pop3 { ssl_listen = 193.190.253.235 } # SSL certificaat en key ssl_cert_file =... ssl_key_file =... # Geen plaintext logins disable_plaintext_auth = yes (...)

33 33 Dovecot # Waar zetten we mail en index (->lokale index) default_mail_env = maildir:~/Maildir/:INDEX=/var/cache/dovecot/%u (...) # Locken met methode die ook over NFS betrouwbaar # werkt lock_method = fcntl (...) # standaard config voor PAM authenticatie auth default { (...) } (...)

34 34 Inhoud ● Internet e-mail ● Overzicht ULYSSIS setup ● Inleiding postfix ● smtp.ulyssis.org/mail.ulyssis.org ● Andere machines

35 35 Postfix ● Zie: https://intern.ulyssis.org/wiki/tiki- index.php?page=PostfixConfig myhostname = cea.intern.ulyssis.org inet_interfaces = localhost mydestination = $myhostname, localhost.$mydomain, localhost relayhost = smtp.intern.ulyssis.org alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases /etc/aliases root: root-cea@ulyssis.org

36 36 Postfix: speciallekes ● Voor shell servers of hosts die niet langs smtp.intern kunnen (e.g. Off-site backup) # Zorg dat mails verstuurd met mutt/pine vanaf # juiste adres komen (shell) # of smtp.kuleuven.be niet klaagt over unknown # source domain (off-site) myorigin = ulyssis.org # Gevolg: duplicatie deel canonical setup nodig canonical_maps = hash:/etc/postfix/canonical /etc/postfix/canonical: root root-pec@ulyssis.org

37 37 Postfix: webserver ● SPAM protectie # Extra logging + mail (behalve cron) in de queue # houden header_checks = regexp:/etc/postfix/header_checks /etc/postfix/header_checks: /^X-PHP-Script:.*$/ WARN /^Bcc:.*$/ WARN /^Cc:.*$/ WARN /^X-MimeOLE: Produced By phpBB2$/ WARN !/^Subject: Cron.*/ HOLD

38 38 Postfix: webserver # Bart's bash oneliner om mailqueue te legen /etc/cron.d/mailflush: MAILTO=bart@ulyssis.org SHELL=/bin/bash */15 * * * * root ([[ `/usr/bin/mailq | tail -n 1 | cut -f 5 -d ' '` -lt 1000 ]] && /usr/sbin/postsuper -H ALL 2> /dev/null && /usr/sbin/postfix flush) || (echo "Error: Too much mail in the mail queue." && /usr/bin/mailq | tail +2 | awk 'BEGIN { RS = "" } / bart@ulyssis.org/ { print $1 } ' | tr -d '*!' | /usr/sbin/postsuper -H -)

39 39 Postfix: webserver # Bart's filter om 'Return-Path' juist te zetten # -> www-data@ulyssis.org is van de bounces af!www-data@ulyssis.org content_filter = scan:localhost:10025 receive_override_options = no_address_mappings

40 40 ? !


Download ppt "ULYSSIS mailsetup ULYSSIS weekend 19 september 2009 Wouter Horré Credits voor de setup: Bart Vanbrabant"

Verwante presentaties


Ads door Google