Oppsett av Exchange for hendelsesbasert oppdatering.

Beskrivelse av oppsett av Exchange og Cerebrum for å kunne motta hendelsesbaserte oppdateringer.

1   Oppsett av springbrettmaskin

1.1   Oppsett av kontoer

Oppsett av kontoer følger i stor grad oppskriften i windowsoppsettet.

  • Opprett en maskin-lokal springbrettkonto og sett et langt og vanskelig passord.
  • Legg den maskin-lokale springbrettkontoen inn i Administrators-gruppa lokalt på maskinen.
  • Opprett en domene-lokal bruker (denne skal brukes til å administrere Exchange). Sett langt og vanskelig passord.
  • Opprett en rollegruppa i ECP (under «permissions» menyvalget). Legg til følgende roller:
    • Address Lists
    • Distribution Groups
    • Mail Recipient Creation
    • Mail Recipients
    • Mailbox Import Export
    • Remote and Accepted Domains
    • Security Group Creation and Membership
    • View-Only Recipients
  • Legg den domene-lokale Exchange administratorbrukeren til i rollegruppa.
  • Gi tilgang til Create, Delete og Modify på eventuelle OU man skal legge grupper i.

1.2   GPO oppsett

Definer en GPO som gir Allow Logon Locally til domene\domenelokalexchangeadministrator og BUILTIN\Administrators.

1.3   WinRM oppsett

Siden windowsoppsettet inneholder generell informasjon om hvordan WinRM bør settes opp.

I tillegg vil man kanskje åpne brannmur for WinRM-tilkoblinger:

netsh advfirewall firewall add rule name="winrm fra Cerebrum" dir=in profile=any localip=any remoteip=any protocol=tcp localport=5986 remoteport=any edge=no action=allow

Denne regelen kan med fordel begrenses mer, ved å sette remoteip.

2   Prodsetting i Cerebrum

Den endelige oppskriften avhenger av hva institusjonen vil ha.

2.1   Kodeendringer

Avhengig av hva instansen trenger, vil det kunne vere behov for kodeendringer i Cerebrum før prodsetting. Noen vanlige behov:

  • Bytte av email_server i brukere sine EmailTarget når nytt Exchange-spread blir gitt. Dette gjøres som oftest direkte i instansen sin mixin av for eksempel Account.

    Grunnen til å endre på email_server er blant annet å fortelle MX-ene om at brukeren sine e-poster skal til et nytt Exchange-miljø. Serveren brukes for å gjenkjenne Exchange-kontoer. Vi forteller som oftest MX-ene dette gjennom produseringen av mail.ldif.

    Se gjerne Cerebrum.modules.no.hia.Account.py for eksempler på hvordan dette er blir gjort.

    Merk: E-postserveren må eksistere som en exchange-server i Cerebrum for at dette skal fungere, se lenger ned, i Prodsetting, for en beskrivelse av dette.

  • Sperrer for at entiteter skal kunne ha flere spreads samtidig, for eksempel både IMAP-spread og Exchange-spread, samt spread for tidligere Exchange-versjoner.

  • Annen automatikk og oppførsel når en entitet får et Exchange-spread. Vi ønsker å ha minst mulig av automatikk for dette, men instanser kan ha behov for å endre på for eksempel e-postkvoter og andre e-postinnstillinger.

2.2   Konfigurasjon

Konfigurasjon som må vere satt opp:

  • cereconf.py må bli oppdatert:

    • CLASS_EMAILTARGET må inneholde Cerebrum.modules.Email/EmailTarget. Om variabelen ikke finnes må den opprettes.
    • CLASS_CHANGELOG må inneholde Cerebrum.modules.EventLog/EventLog. Uten denne vil det ikke bli logget til event-loggen, bare til change-loggen.
    • CLASS_CONSTANTS må inneholde:
      • Cerebrum.modules.exchange.Constants/Constants
      • Cerebrum.modules.exchange.TargetSystemConstants/TargetSystemConstants
      • Cerebrum.modules.exchange.CLConstants/CLConstants
  • For å få tilgang til event-kommandoene i bofhd må config.dat oppdateres med linjen:

    Cerebrum.modules.event.bofhd_event_cmds/BofhdExtension
    
  • Opprett/oppdater eventconf.py med en ny synk. Variablene som kan settes er beskrevet i Cerebrum/config/eventconf.py. Bruk gjerne andre instanser sin konfigurasjon som eksempler.

    Passordene som er satt på AD-siden må lagres på vanlig plass i produksjonsmiljøet.

  • Legg til event-daemonen i scheduled_jobs.py, for eksempel med:

    # Keep the Exchange-integration running.
    exchange_event_daemon = Action(
            call=AssertRunning(pjoin(sbin, 'event_daemon.py'),
                params=['--type', 'Exchange',
                        '--logger-level=DEBUG5',
                        '2>', pjoin(logdir, 'event_daemon.py', 'stderr')]),
                when=When(freq=5*60),
                max_duration=None)
    

    For å få feilmeldinger på e-post trenger du en egen maillogger:

    # Event daemon's errors gets piped to stdout, which gets piped to a file
    maillog_exchange_stderr = Action(
            call=System(pj(bin, 'maillog.py'),
                    params=['-f', pj(logdir, 'event_daemon.py', 'stderr'),
                            '-m', 'varsel@example.com',
                            '-u', pj(etc, 'maillog-exceptions.txt')]),
            when = When(freq=60*60))
    
  • Studenter kan få exchange-spread i studconfig.xml, men merk at det da settes for alle studenter, samtidig. Det er anbefalt å gjøre en migrering før studentautomatikken oppdateres!

  • Nye brukere opprettet gjennom bofhd kan automatisk få Exchange-spread ved å legge dette til i cereconf.BOFHD_NEW_USER_SPREADS. Det er ikke sikkert at instansen ønsker dette.

2.3   Prodsetting

  1. Oppgrader filene i miljøet.

  2. Cerebrum trenger en egen email-server som skal brukes for Exchange, for eksempel i mail-LDAP. Denne email-serveren skal settes for alle som skal til Exchange, og gjør bl.a. at MX-ene får sortert e-post til riktig system.

    Et eksempel på en e-posttjener er mail.uio.no eller mail-prod-db03.uio.no. Det spiller ikke så stor rolle hva dette er, så lenge MX-ene er konfigurert med samme verdi.

    1. Opprett e-posttjeneren ved å lage en fil med innholdet:

      exchange:SERVERNAVN:Exchange mail server
      

      Bytt ut det som passer (se SELECT * from email_server_type_code for tilgjengelige server-typer om exchange ikke er riktig).

    2. Registrer tjeneren i Cerebrum med:

      contrib/migrate/import_host_disk.py -e -f FILNAVN
      
  3. Stopp alle jobber, inkludert job_runner.

  4. Opprett tabeller og gjør klar konstanter:

    # Opprett event-tabellene:
    makedb.py design/mod_eventlog.sql
    # Opprett tabeller for distribusjongruppedata:
    makedb.py design/mod_distributiongroup.sql
    # Legg til de nye konstantene:
    makedb.py --debug --update-codes
    
  5. Gjør klar event-bindinger, slik at Cerebrum vet hvilke eventer som skal opprettes for Exchange sin event-daemon:

    contrib/populate-target-systems.py --purge --type Exchange
    

    Skriptet fyller tabellen event_to_target med hvilke eventer som skal bli genererte under kjøring. Er tabellen tom vil ingen eventer bli opprettet.

    Merk at --purge fjerner eksisterende bindinger, så vær forsiktig med denne etter at integrasjonen allerede er i produksjon.

  6. job_runner kan bli startet igjen.

  7. Hvis distribusjonsgrupper skal brukes:

    1. Gi gruppene et eget e-postdomene gjennom bofh:

      jbofh> email create_domain groups.uio.no "Distribusjonsgrupper"
      
    2. Gjør klar standard moderator-gruppe "groupadmin" for distribusjonsgruppene:

      contrib/migrate/create_distgroup_moderator_for_exchange.py groups.uio.no
      
  8. Start event-daemonen:

    python $src_path/servers/event/event_daemon.py --type Exchange --logger-level=DEBUG5
    

    Dette kan alternativt legges til i scheduled_jobs.py, som beskrevet over.

2.4   Testing

  1. For å vere sikker på at integrasjonen er oppe og kjører, se til at loggen ikke inneholder feilmeldinger, og at du får opp en linje i loggen:

    2014-08-07 12:00 INFO Listening for events
    

    Det er nemlig ikke alle feilmeldinger som dukker opp i loggen, dessverre.

  2. Be instansen om å teste integrasjonen ved at de gir en entitet et relevant Exchange-spread, og se til at objektet blir opprettet i Exchange.

CRB-185 beskriver hvordan dette ble gjort for UiO, CRBD-72 for UiA.

4   Slå av integrasjonen

Kjør:

ps -eo pid,ppid,args | grep event_daemon.py | grep -v grep | sort

kill -SIGHUP <pid>

der <pid> er foreldreprosessens PID.

Av jsama, jokim
Publisert 19. aug. 2014 06:48 - Sist endret 11. mai 2019 04:34