Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

If we replace the Mail Relays with Exchange Online, then the previous step doesn’t happen. We change the original MX record for “yale.edu” to point to “connect-yale-edu.mail.protection.outlook.com” and we take the teas and dump them in Boston harbor (we can have a party to celebrate the success of the project, but dressing up as native Americans is no longer appropriate because it is “cultural appropriation”).

Exchange Online will behave the same whether mail is sent to it directly or comes through the Mail Relays. So any mail that Exchange already processes correctly will work the same and we do not need to make changes.

The largest block of mail that will be processed differently are the student Eliapps accounts. Previously they would be sent from the Mail Relay to Google directly. Now the mail goes to Exchange. Because Exchange believes that it is “@yale.edu”, it initially expects that mail addressed to a user named “john.doe@yale.edu” is a personal O365 mailbox or a group object named “gravitywaveastronomy@yale.edu” is a shared mailbox or distribution list. However, it will find that the Azure AD User object for “john.doe@yale.edu” has no O365 account and will find no configured DL named “gravitywaveastronomy@yale.edu”.

It has always been possible to add configurations to Exchange and AD for mail accounts that belong to a university or company but which are hosted on another mail system. Originally Microsoft designed this when each department in a company had its own departmental mail server, but it works with any kind of server.

We already have the information we need in the Alias Table. Just as the current system uses the Alias Table to generate configuration for the Mail Relays, we can generate configuration in AD that Exchange will recognize as a pointer to a Yale University mail account on an external server. There has to be an AD object. The AD object cannot be a User with an O365 account (or the mail would be delivered to that mailbox). The object must be have a TargetAddress property.

  1. The value of TargetAddress is essentially the MAILBOX column value in the Alias Table.

  2. The AD Object can be a User or a Contact. Since every student with an Eliapps account already has an AD User object (and Yale Policy is that Eliapps mail users don’t also have an O365 mailbox), we have adopted the simplifying rule to put a TargetAddress in the existing User object for these students, but create a Contact for shared mailbox groups and everyone else.

  3. The ALIAS_NAME must match one entry in the ProxyAddresses list property for the AD Object.

If we do this, then Exchange Online has the information it needs to forward mail for every Alias in the Alias Table that does not have an “@connect.yale.edu” MAILBOX, and therefore it can replace the existing Mail Relay function.

Exchange does not care how many objects you scatter into the AD, but it would certainly be a bad idea to create extra objects for the secondary Aliases of a student Eliapps account. So the student’s AD User object should contain ProxyAddresses for both the Primary Alias name and all secondary Alias names that point to the same “bulldogs” MAILBOX account.

We propose to also group Contact objects by MAILBOX value. More that one Alias can point to the same MAILBOX value, but if we group by MAILBOX value, we can then generate one Contact object for that value and add a ProxyAddresses entry for every ALIAS_NAME in the table with that MAILBOX.

Alias names change if a person chooses to change their First or Last name or if they enable and disable privacy. This is an IAM function.

Currently the old AD Daily Updater generates ProxyAddresses from Primary and Secondary Aliases of Exchange (@connect.yale.edu) MAILBOX values, although the old code gets confused unless the Netid owning the Alias is also the netid in the “netid@connect.yale.edu” value (which isn’t always true). The replacement code in IIQ (which has been written and tested but has not gone into production) fixes the incorrect assumptions by ignoring alias ownership, and it also generates the correct ProxyAddresses entries for primary and secondary Eliapps accounts (@bulldogs.yale.edu).

However, to address the “Canvas Contact” problem we have created ProxyAddresses and TargetAddress fields in the AD and Azure AD User objects of current students with Eliapps accounts. This is done only when the mailbox is created, so if a student generates Secondary Aliases or changes the Primary Alias, the ProxyAddresses list would have to be changed manually.

Done: Populate the ProxyAddresses list of student Eliapps users with any Secondary Aliases that have a MAILBOX that points to their Eliapps account.

Done: There may be Eliapps accounts that are the Primary Email Alias of people who are not current students and were not configured as part of the student class distribution list fix. Their Primary and Secondary aliases should be configured in their User objects if possible, or in a Contact if they also have an O365 account occupying the User object.

Done: All remaining Email Aliases (excluding aliases pointing to some sort of Exchange account or a Primary Eliapps account) get turned into Contacts. We do not create or look for User objects for them. A new Contact is created in some new OU, and the MAILBOX becomes its TargetAddress and all the ALIAS_NAMEs with that MAILBOX value become entries in its ProxyAddresses list.

Decision Point: The personal O365 and Eliapps accounts are plausibly related to IAM, although we are not in the business of creating Secondary Aliases. It may be decided that it is useful to continue to audit the Alias Table and the ProxyAddresses list to see if somehow personal Alias changes slipped in without generating the required ProxyAddress changes. However, the creation and modification of shared mailboxes and departmental accounts is not an IAM function and because these objects have no information in Identity tables, we are not in a position to audit them properly. We should consider this a one time conversion of Alias information into AD objects and properties that configure Exchange Online. Going forward, all scripts, tools, and procedures used to generate departmental accounts and create their aliases should also manage their Contacts with the mail routing information.

Cleanup: If tools are created or converted to manage non-personal mail accounts, then we should consider establishing some proper rules and converting existing entries to match these rules. In particular, the practice of creating an Email Alias and a Dependent Netid and assigning ownership of the Alias to the person who owns the dependent Netid causes serious problems. People leave the university without transferring both the alias and the Dependent Netid to someone else. Then when their personal mail gets deprovisioned, the Secondary Alias for the group account remains attached to the inactive AD User object. The correct thing to do is the assign ownership of the Alias to the Dependent Netid that represents the shared mail account. The account can then stand alone, and if the owner fails to transfer the Dependent Netid to someone else, well the Dependent Netid is still active even if the former owner is inactive. This fix is not technically part of the Mail Relay project, but if we are fixing all the tools for this type of account we should fix this at the same time.

People with an Eliapps Primary Alias and O365 Secondary Alias

receive the original address in the mail without any translation through the Alias table. This means that Exchange has to understand “howard.gilbert@yale.edu”, while if the Mail Relays had preprocessed this alias they would have forwarded it as “gilbert@connect.yale.edu”.

In practice, this means that every Alias name has to be mapped to a Recipient (as explained above). In the past, some Aliases were not recognized by Exchange, so it would forward that message to the Mail Relays who in turn would translate the alias to a MAILBOX value and send it back. To get rid of the Mail Relays, Exchange has to recognize every alias immediately.

Done: Populate the ProxyAddresses list of student Eliapps users with any Secondary Aliases that have a MAILBOX that points to their Eliapps account.

Done: There may be Eliapps accounts that are the Primary Email Alias of people who are not current students and were not configured as part of the student class distribution list fix. Their Primary and Secondary aliases should be configured in their User objects if possible, or in a Contact if they also have an O365 account occupying the User object.

Done: All remaining Email Aliases (excluding aliases pointing to some sort of Exchange account or a Primary Eliapps account) get turned into Contacts. We do not create or look for User objects for them. A new Contact is created in some new OU, and the MAILBOX becomes its TargetAddress and all the ALIAS_NAMEs with that MAILBOX value become entries in its ProxyAddresses list.

ToDo: The Legacy ADDailyUpdater is deleting Secondary Email Aliases from the ProxyAddresses list. This must be fixed.

Decision Point: The personal O365 and Eliapps accounts are plausibly related to IAM, although we are not in the business of creating Secondary Aliases. It may be decided that it is useful to continue to audit the Alias Table and the ProxyAddresses list to see if somehow personal Alias changes slipped in without generating the required ProxyAddress changes. However, the creation and modification of shared mailboxes and departmental accounts is not an IAM function and because these objects have no information in Identity tables, we are not in a position to audit them properly. We should consider this a one time conversion of Alias information into AD objects and properties that configure Exchange Online. Going forward, all scripts, tools, and procedures used to generate departmental accounts and create their aliases should also manage their Contacts with the mail routing information.

Cleanup: If tools are created or converted to manage non-personal mail accounts, then we should consider establishing some proper rules and converting existing entries to match these rules. In particular, the practice of creating an Email Alias and a Dependent Netid and assigning ownership of the Alias to the person who owns the dependent Netid causes serious problems. People leave the university without transferring both the alias and the Dependent Netid to someone else. Then when their personal mail gets deprovisioned, the Secondary Alias for the group account remains attached to the inactive AD User object. The correct thing to do is the assign ownership of the Alias to the Dependent Netid that represents the shared mail account. The account can then stand alone, and if the owner fails to transfer the Dependent Netid to someone else, well the Dependent Netid is still active even if the former owner is inactive. This fix is not technically part of the Mail Relay project, but if we are fixing all the tools for this type of account we should fix this at the same time.

People with an Eliapps Primary Alias and O365 Secondary Alias

The following people violate Yale policy by having an O365 account as a “secondary” rather than a primary account. Currently mail sent to “morrow.long@yale.edu” from any O365 user goes to his O365 inbox, while mail from outside Yale or from Eliapps goes to his Eliapps mailbox. When the Mail Relays go away, all mail will be delivered to O365. These users should be notified of the change.

Code Block
ALIAS_NAME              TYPE   MAILBOX                                   NETID
----------              ----   -------                                   -----
morrow.long             person morrow.long@bulldogs.yale.edu             long
jason.ignatius          person jason.ignatius@bulldogs.yale.edu          jsi3
kcm.campbell            person kcm.campbell@bulldogs.yale.edu            cjc243
stuart.teal             person stuart.teal@bulldogs.yale.edu             sbt3
yanick-noelle.aigbedion person yanick-noelle.aigbedion@bulldogs.yale.edu yoa4
samira.ataei            person samira.ataei@bulldogs.yale.edu            fa292
jeff.mandell            person jeff.mandell@bulldogs.yale.edu            jm3353
sam.seiff               person sam.seiff@bulldogs.yale.edu               sbs79
bernardo.eilerttrevisan person bernardo.eilerttrevisan@bulldogs.yale.edu be244
elena.adasheva-klein    person elena.adasheva-klein@bulldogs.yale.edu    ea479
georgios.vasilopoulos   person georgios.vasilopoulos@bulldogs.yale.edu   vg284

...

 person georgios.vasilopoulos@bulldogs.yale.edu   vg284

People with Eliapps Primary Alias, No O365 Secondary Alias, but are “UserMailbox” Recipents (have a mailbox) in Exchange

The following people appear to have an O365 mailbox but no Email Alias points to it. Unless mail is sent directly to “netid@connect.yale.edu” they cannot get mail. If they login to their O365 account they can run Outlook, but they should not actually be able to receive mail. It appears the O365 mail account is left behind by some process. For example, some people change from O365 to Eliapps, and if the account is not deleted at the end, you end up with this situation. The problem here is that the unusable O365 account occupies the AD User object, so their Eliapps account has to be represented by a Contact object. This does not cause any problem and need not be fixed in order to retire the Mail Relays.

Code Block
ALIAS_NAME              TYPE   MAILBOX                                   NETID
----------              ----   -------                                   -----
travis.zadeh            person travis.zadeh@bulldogs.yale.edu            tz237
thomas.langford         person thomas.langford@bulldogs.yale.edu         tl397
ben.kiernan             person ben.kiernan@bulldogs.yale.edu             magpie
carol.hwang             person carol.hwang@bulldogs.yale.edu             chwang
cynthia.farrar          person cynthia.farrar@bulldogs.yale.edu          cfarrar
albert.laguna           person albert.laguna@bulldogs.yale.edu           al757
wayne.zhang             person wayne.zhang@bulldogs.yale.edu             wwz3
mark.gerstein           person mark.gerstein@bulldogs.yale.edu           mg269
richard.lalli           person richard.lalli@bulldogs.yale.edu           rl3
ivan.szelenyi           person ivan.szelenyi@bulldogs.yale.edu           is66
kusal.samarasinghe      person kusal.samarasinghe@bulldogs.yale.edu      kts34
victoria.misenti        person victoria.misenti@bulldogs.yale.edu        vlg8
william.hawkins         person william.hawkins@bulldogs.yale.edu         wbh24
richard.walser          person richard.walser@bulldogs.yale.edu          rwalser
keith.corbino           person keith.corbino@bulldogs.yale.edu           kac64
jesus.yanez             person jesus.yanez@bulldogs.yale.edu             jy384
yong.xiong              person yong.xiong@bulldogs.yale.edu              yx44
wasim.sayyad            person wasim.sayyad@bulldogs.yale.edu            was35
rohan.gurram            person rohan.gurram@bulldogs.yale.edu            rkg33
nirag.kadakia           person nirag.kadakia@bulldogs.yale.edu           nk479
aman.khanuja            person aman.khanuja@bulldogs.yale.edu            ak2385
nicholas.ryan           person nicholas.ryan@bulldogs.yale.edu           njr33
j.zhang                 person j.zhang@bulldogs.yale.edu                 jz435
claudia.villano         person claudia.villano@bulldogs.yale.edu         cav7
kyle.vanderwerf         person kyle.vanderwerf@bulldogs.yale.edu         krv8
paul.wolfram            person paul.wolfram@bulldogs.yale.edu            pw379
kas.tebbetts            person kas.tebbetts@bulldogs.yale.edu            kt522
soumya.james            person soumya.james@bulldogs.yale.edu            sj484
megan.eckerle           person megan.eckerle@bulldogs.yale.edu           mme28
ronald.tricoche         person ronald.tricoche@bulldogs.yale.edu         rt347
craig.luekens           person craig.luekens@bulldogs.yale.edu           cal65
andrea.darif            person andrea.darif@bulldogs.yale.edu            ad566
saul.jaime-figueroa     person saul.jaime-figueroa@bulldogs.yale.edu     sj396
omer.mano               person omer.mano@bulldogs.yale.edu               om55
xinglin.lu              person xinglin.lu@bulldogs.yale.edu              xl294
mahmut.demir            person mahmut.demir@bulldogs.yale.edu            md762
andrew.currie           person andrew.currie@bulldogs.yale.edu           ajc82
libby.didomizio         person libby.didomizio@bulldogs.yale.edu         eed37
nathan.chang            person nathan.chang@bulldogs.yale.edu            nac53
ting.zhou               person ting.zhou@bulldogs.yale.edu               tz232
debra.houle             person debra.houle@bulldogs.yale.edu             dh462
daifeng.wang            person daifeng.wang@bulldogs.yale.edu            dw396
yotam.hadar             person yotam.hadar@bulldogs.yale.edu             ymh4
paul.berkowitz          person paul.berkowitz@bulldogs.yale.edu          phb8
fatih.celikbas          person fatih.celikbas@bulldogs.yale.edu          fc359
luyao.jiang             person luyao.jiang@bulldogs.yale.edu             lj275
michelle.yuen           person michelle.yuen@bulldogs.yale.edu           mcy6
jonathan.warrell        person jonathan.warrell@bulldogs.yale.edu        jw2394
timur.galeev            person timur.galeev@bulldogs.yale.edu            tg397
sara.smith              person sara.smith@bulldogs.yale.edu              sks25
melissa.lu              person melissa.lu@bulldogs.yale.edu              ml2453
jaeeun.song             person jaeeun.song@bulldogs.yale.edu             js2894
vishal.patel            person vishal.patel@bulldogs.yale.edu            vp276
wenjun.hu               person wenjun.hu@bulldogs.yale.edu               wh288
j.zhuang                person j.zhuang@bulldogs.yale.edu                jz472
tianliuyun.gao          person tianliuyun.gao@bulldogs.yale.edu          tg344
nat.irwin               person nat.irwin@bulldogs.yale.edu               nsi4
declan.clarke           person declan.clarke@bulldogs.yale.edu           dc547
arthur.lau              person arthur.lau@bulldogs.yale.edu              ajl74
kevin.lopez             person kevin.lopez@bulldogs.yale.edu             kl533
raymond.simpson         person raymond.simpson@bulldogs.yale.edu         rgs45
roger.desravines        person roger.desravines@bulldogs.yale.edu        rd557
rachel.renne            person rachel.renne@bulldogs.yale.edu            rr687
claudia.valeggia        person claudia.valeggia@bulldogs.yale.edu        crv7
eduardo.fernandez-duque person eduardo.fernandez-duque@bulldogs.yale.edu ef344
farren.isaacs           person farren.isaacs@bulldogs.yale.edu           fji2
sahand.negahban         person sahand.negahban@bulldogs.yale.edu         snn7
karihenkelmann.keyl     person karihenkelmann.keyl@bulldogs.yale.edu     kk544
john.henderson          person john.henderson@bulldogs.yale.edu          jh925
antonio.fonseca         person antonio.fonseca@bulldogs.yale.edu         ahf38
xing.wu                 person xing.wu@bulldogs.yale.edu                 xw358
tianxiao.li             person tianxiao.li@bulldogs.yale.edu             tl444
clinton.wang            person clinton.wang@bulldogs.yale.edu            cjw46
hatice.erten            person hatice.erten@bulldogs.yale.edu            hne2
lewis.golove            person lewis.golove@bulldogs.yale.edu            lg432
laurel.german           person laurel.german@bulldogs.yale.edu           lag48
mela.toro               person mela.toro@bulldogs.yale.edu               at549
andres.munozrojas       person andres.munozrojas@bulldogs.yale.edu       arm92
alberto.urcia           person alberto.urcia@bulldogs.yale.edu           au45
clare.staib-kaufman     person clare.staib-kaufman@bulldogs.yale.edu     cs2528
damon.clark             person damon.clark@bulldogs.yale.edu             dac77
jennifer.wu             person jennifer.wu@bulldogs.yale.edu             jw2282
jennifer.raab           person jennifer.raab@bulldogs.yale.edu           jcr42
marcus.alexander        person marcus.alexander@bulldogs.yale.edu        mam96
noah.planavsky          person noah.planavsky@bulldogs.yale.edu          np363
dhanusha.nalawansha     person dhanusha.nalawansha@bulldogs.yale.edu     dan44
leonidas.salichos       person leonidas.salichos@bulldogs.yale.edu       ls926
isaac.nakhimovsky       person isaac.nakhimovsky@bulldogs.yale.edu       isn2
chitra.ramalingam       person chitra.ramalingam@bulldogs.yale.edu       cr537
robyn.creswell          person robyn.creswell@bulldogs.yale.edu          rc698
basile.njei             person basile.njei@bulldogs.yale.edu             bn72
jacqueline.kisa         person jacqueline.kisa@bulldogs.yale.edu         jkk35
benjamin.schwartz       person benjamin.schwartz@bulldogs.yale.edu       bs843
shaoke.lou              person shaoke.lou@bulldogs.yale.edu              sl2373
steven.chou             person steven.chou@bulldogs.yale.edu             sc2493
sarah.luckart           person sarah.luckart@bulldogs.yale.edu           srl54
jacob.e.miller          person jacob.e.miller@bulldogs.yale.edu          jem263
joseph.goode            person joseph.goode@bulldogs.yale.edu            jbg66
ran.gu                  person ran.gu@bulldogs.yale.edu                  rg684
marilyn.mossien         person marilyn.mossien@bulldogs.yale.edu         mrm95
nikhil.malvankar        person nikhil.malvankar@bulldogs.yale.edu        nm563
terence.renaud          person terence.renaud@bulldogs.yale.edu          tr369
test2.infoed.ti7        person test2.infoed.ti7@bulldogs.yale.edu        ti7
david.breslow           person david.breslow@bulldogs.yale.edu           dkb27
yannick.jacob           person yannick.jacob@bulldogs.yale.edu           yj242
susan.choi              person susan.choi@bulldogs.yale.edu              sc385
alyssa.dechiaro         person alyssa.dechiaro@bulldogs.yale.edu         ad949
imad.rizvi              person ir99@bulldogs.yale.edu                    ir99
yat.wong                person yat.wong@bulldogs.yale.edu                yw629
xinyi.zhang.xz476       person xinyi.zhang.xz476@bulldogs.yale.edu       xz476
rachael.roettenbacher   person rachael.roettenbacher@bulldogs.yale.edu   rmr79
killian.mcloughlin      person killian.mcloughlin@bulldogs.yale.edu      km2345
jennifer.nulsen         person jennifer.nulsen@bulldogs.yale.edu         jn535
a.scott                 person a.scott@bulldogs.yale.edu                 aas228
chenziyi.mi             person chenziyi.mi@bulldogs.yale.edu             cm2523
sebastian.lordadumont   person sebastian.lordadumont@bulldogs.yale.edu   ssl57
haoran.cao              person haoran.cao@bulldogs.yale.edu              hc685
jack.berry              person jack.berry@bulldogs.yale.edu              jrb248
mark.lisi               person mark.lisi@bulldogs.yale.edu               ml2622
brian.koopman           person brian.koopman@bulldogs.yale.edu           bjk49
avi.cohen               person avi.cohen@bulldogs.yale.edu               ajc259
ishan.negi              person ishan.negi@bulldogs.yale.edu              in49
yinan.chen              person yinan.chen@bulldogs.yale.edu              yc778
pranavateja.surukuchi   person pranavateja.surukuchi@bulldogs.yale.edu   ps938
yue.hu                  person yue.hu@bulldogs.yale.edu                  yh567
gabe.petrov             person gabe.petrov@bulldogs.yale.edu             gpp8
haven.herrin            person haven.herrin@bulldogs.yale.edu            hmh47
yixuan.tan              person yixuan.tan@bulldogs.yale.edu              yt355
yakun.zhou              person yakun.zhou@bulldogs.yale.edu              yz883
jacques.saarbach        person jacques.saarbach@bulldogs.yale.edu        js3973
emma.mckinney           person emma.mckinney@bulldogs.yale.edu           em873
michael.rader           person michael.rader@bulldogs.yale.edu           mr2542
ashley.arthur           person ashley.arthur@bulldogs.yale.edu           ala72
andy.knauer             person ajk83@bulldogs.yale.edu                   ajk83
xiangyu.zhang           person xiangyu.zhang@bulldogs.yale.edu           xz527
ben.crair               person ben.crair@bulldogs.yale.edu               bec32
nicolas.maffey          person nicolas.maffey@bulldogs.yale.edu          nam87
charalampos.papamanthou person charalampos.papamanthou@bulldogs.yale.edu cp936
xuqiang.qin             person xuqiang.qin@bulldogs.yale.edu             xq43
sunny.yang              person sunny.yang@bulldogs.yale.edu              gy88
alison.sweeney          person alison.sweeney@bulldogs.yale.edu          as3822
chungsuk.choi           person chungsuk.choi@bulldogs.yale.edu           cc2858
makenna.hamilton        person makenna.hamilton@bulldogs.yale.edu        mh2539
chaofan.xu              person chaofan.xu@bulldogs.yale.edu              cx78
david.goerger           person david.goerger@bulldogs.yale.edu           deg38
ruifeng.sun             person ruifeng.sun@bulldogs.yale.edu             rs2623
juan.gambetta           person juan.gambetta@bulldogs.yale.edu           jpg68
caroline.chen           person caroline.chen@bulldogs.yale.edu           cc2766
junqi.wang              person junqi.wang@bulldogs.yale.edu              jw2675
fl428                   person fl428@bulldogs.yale.edu                   fl428
ar2483                  person ar2483@bulldogs.yale.edu                  ar2483

AD Daily Updater Bug Entries

There are around 1700 users who have only Eliapps Email aliases and who are regarded by Exchange Online as only MailUsers (that is, they are not UserMailbox entries and therefore have no Exchange mail account). The Legacy AD Daily Updater may have added incorrect smtp:netid@connect.yale.edu and smtp:first.last@connect.yale.edu proxyaddresses and values for msexchversion and three other msexch* fields. These should be removed, although they create no problems for the Mail Relay retirement project and are just incorrect data that should be cleaned up when the Legacy AD Daily Updater is retriedThe Legacy ADDailyUpdater code adds “netid@connect.yale.edu” and “first.last@connect.yale.edu” to some Eliapps User objects. These entries are misleading to a person, but they do not confuse Exchange Online. These AD User objects are MailUsers with an ExternalEmailAddress (called a TargetAddress in AD). They do not have an O365 Mailbox and Exchange knows that even though there are “connect.yale.edu” entries in the ProxyAddresses list. Again, this is not something that has to be fixed to retire the Mail Relays, but after the ADDailyUpdater is replaced by the IIQ AD Updater function, these incorrect entries should be deleted. Also, any msExchVersion number or other msExchxxxx fields incorrectly set by Legacy ADDailyUpdater should be cleared. This will be a one time Powershell cleanup done after we stop running ADDailyUpdater.