Embarrassingly Forgot Our Login Password

69 views
Skip to first unread message

jkiritharan

unread,
Oct 7, 2020, 1:20:30 AM10/7/20
to EaaSI Tech Talk
Hello!

So it'd been a while since I set this up and I have forgotten the password to log in to our eaasi instance.
I know the email but what I have written down does not work -- which is most likely my fault. I don't remember what steps we had to take to set up the initial user either.. also my fault!
Anyways, all the other passwords that are in the artifacts/config/eaasi.yaml file do not work (ui, mailer), the other defaults in the other ansible scripts also do not work. 
Is there a good way to figure out what it is or to reset it or should I just run the update script again?

Thank you,

Jonathan

Andrii Kost

unread,
Oct 8, 2020, 10:30:13 AM10/8/20
to EaaSI Tech Talk
Hello Jonathan,

The default password for the initial user is `eaasidemo1`. If you've changed/reset the password after the initial installation, please run an update script again to reset the password back to the default one.
Make sure that in your ansible config file you specify that you'd like to update a database.
```
portal:
 db_update: true # to reset a database
 ...
 initial_user:
  email: "exa...@mail.com" # make sure you have your email specified here
 ...
```
Important Note: by running an update script with the `db_update` flag set to `true` you will force the database to be cleared out and seeded as it was a clean installation. All your client-side data will be lost (like bookmarks, users, user import references, etc.). 
I'd recommend to backup your application before resetting the database.

Please let me know if you have any trouble doing any of the above.

Thank you,
Andrii

jkiritharan

unread,
Oct 15, 2020, 3:59:48 PM10/15/20
to EaaSI Tech Talk
Thank you for your reply

I backed up, altered the artifacts/config/eaasi.yml portal section to include db_update, and tried running the update script via ./scripts/update.sh
The ansible script said that it was changed as well (or at least it noticed the flag for updating the db):
TASK [eaasi-portal : create a flag file if force db update is enabled] ********************
changed: [eaas-gateway] => changed=true 
  checksum: da39a3ee5e6b4b0d3255bfef95601890afd80709
  dest: /eaas-home/portal/eaasi-web-api/force_db_update
However, I still receive the same error and cannot log in.

When examining the docker container database I see the same user, but it's retained the last time I logged in (august):
eaasi_dev=# select * from eaasi_user;
 id |         createdAt          |         updatedAt          |  username   | firstName | lastName |         email          | roleId |         lastLogin          
----+----------------------------+----------------------------+-------------+-----------+----------+------------------------+--------+----------------------------
  1 | 2020-07-31 01:43:40.062+00 | 2020-08-04 15:17:17.512+00 | eaasi_group | prof      | eaasi    | ea...@andrew.cmu.edu   |      1 | 2020-08-04 15:17:17.511+00

I've tried running it a couple more times and still the same results.
Am I missing anything or are there other solutions? Perhaps a blank copy of a database that I can then create a user on?

-Jonathan


Andrii Kost

unread,
Oct 16, 2020, 12:08:30 PM10/16/20
to EaaSI Tech Talk
Hello Jonathan,

Based on the ansible log I could guess that there might be an underlying issue with `eaasi-web-api` container. Could you share your web-api log file? 
You can find it by navigating to the directory `<EAASI_DIR>/portal/eaasi-web-api/logs`. 
If there's nothing in the logs folder, could you please share `eaasi-web-api` container logs? Please attempt to sign in before sharing container logs if possible.

`sudo docker logs eaasi-web-api`

Hope to hear soon from you.

Thank you,

jkiritharan

unread,
Oct 16, 2020, 1:05:11 PM10/16/20
to EaaSI Tech Talk
Greetings!

I attempted to log in using the email ea...@andrew.cmu.edu
and several passwords, the last one being eaasidemo1  and then ran the docker log code. It seems to want to try to log me in as eaasi_dev ? But I have noted in my eaasi.yaml file that the username should be eaasi_group which is also returned if you at the row I copied from the database in my post above.

Here is the full response from the log:
$ sudo docker logs eaasi-web-api
wait-for-it.sh: waiting 15 seconds for eaasi-database:5432
wait-for-it.sh: eaasi-database:5432 is available after 0 seconds

Sequelize CLI [Node: 10.16.3, CLI: 6.2.0, ORM: 5.22.3]

Loaded configuration file "src/data_access/config/config.js".
Using environment "production".

ERROR: password authentication failed for user "eaasi_dev"


Sequelize CLI [Node: 10.16.3, CLI: 6.2.0, ORM: 5.22.3]

Loaded configuration file "src/data_access/config/config.js".
Using environment "production".

ERROR: password authentication failed for user "eaasi_dev"


Sequelize CLI [Node: 10.16.3, CLI: 6.2.0, ORM: 5.22.3]

Loaded configuration file "src/data_access/config/config.js".
Using environment "production".

ERROR: password authentication failed for user "eaasi_dev"


> eaasi-...@0.0.0 prod /app
> export NODE_ENV=production && npm run clean && npm run build && npm run server:prod


> eaasi-...@0.0.0 clean /app
> rimraf dist


> eaasi-...@0.0.0 build /app
> npm run generate-docs && npm run clean && babel src --out-dir dist --copy-files --source-maps --extensions ".ts,.js"


> eaasi-...@0.0.0 generate-docs /app
> apidoc -i src/ -o apidoc

{"message":"parser plugin 'apipermissio' not found in block: 5","level":"warn"}
{"message":"parser plugin 'apibody' not found in block: 2","level":"warn"}
{"message":"Done.","level":"info"}

> eaasi-...@0.0.0 clean /app
> rimraf dist

Successfully compiled 504 files with Babel.

> eaasi-...@0.0.0 server:prod /app
> node ./dist/app.js

dotenv-flow: "NODE_ENV" is already defined in `process.env` and will not be overwritten
dotenv-flow: "JWT_SECRET" is already defined in `process.env` and will not be overwritten
dotenv-flow: "EXPRESS_PORT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "EAASI_CLIENT_URL" is already defined in `process.env` and will not be overwritten
dotenv-flow: "EMIL_SERVICE_ENDPOINT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "IMAGE_ARCHIVE_SERVICE_ENDPOINT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "OBJECT_ARCHIVE_SERVICE_ENDPOINT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "OAI_PMH_SERVICE_ENDPOINT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "EAAS_SERVICE_ENDPOINT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SOFTWARE_ARCHIVE_SERVICE_ENDPOINT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "HOST_DOMAIN" is already defined in `process.env` and will not be overwritten
dotenv-flow: "IDP_CERT_RELPATH" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SP_CERT_RELPATH" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SP_PRIVATE_CERT_RELPATH" is already defined in `process.env` and will not be overwritten
dotenv-flow: "JWT_NAME" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SAML_ENABLED" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SAML_ID" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SAML_CALLBACK_URL" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SAML_ENTRYPOINT_URL" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SAML_CLIENT_ID" is already defined in `process.env` and will not be overwritten
dotenv-flow: "SAML_LOGOUT_URL" is already defined in `process.env` and will not be overwritten
dotenv-flow: "USER_EMAIL_CLAIM_PROPERTY" is already defined in `process.env` and will not be overwritten
dotenv-flow: "MAILER_PORT" is already defined in `process.env` and will not be overwritten
dotenv-flow: "MAILER_HOST" is already defined in `process.env` and will not be overwritten
dotenv-flow: "MAILER_USER" is already defined in `process.env` and will not be overwritten
dotenv-flow: "MAILER_PASSWORD" is already defined in `process.env` and will not be overwritten
dotenv-flow: "MAILER_SENDER" is already defined in `process.env` and will not be overwritten
dotenv-flow: "EAAS_JAVA_SERVICE_URL" is already defined in `process.env` and will not be overwritten
(node:160) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 uncaughtException listeners added. Use emitter.setMaxListeners() to increase limit
Unhandled rejection SequelizeConnectionError: password authentication failed for user "eaasi_dev"
    at connection.connect.err (/app/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:182:24)
    at Connection.connectingErrorHandler (/app/node_modules/pg/lib/client.js:194:14)
    at Connection.emit (events.js:198:13)
    at Socket.<anonymous> (/app/node_modules/pg/lib/connection.js:134:12)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

-Jonathan

Andrii Kost

unread,
Oct 16, 2020, 1:18:49 PM10/16/20
to EaaSI Tech Talk
Looks like something went wrong during the database setup. Could you add `database` config block under `portal` in the ansible config file (<ansible_dir>/artifacty/eaasi.yaml)

Here's the "demo" credentials:
```
portal:
  ...
  database:
    username: eaasi_dev
    password: eaasi_dev
    name: eaasi_dev
    postgres_user: eaasi_dev
    postgres_user_pw: eaasi_dev
    postgres_user_new_pw: eaasi_dev
```

Feel free to change db credentials to whatever you'd like. Then run an update script once more.

jkiritharan

unread,
Oct 16, 2020, 2:39:04 PM10/16/20
to EaaSI Tech Talk
Still didn't work for some reason... 
I put in the demo credentials in the portal with the database block
ran update and tried to log in again and i have the same error in the log
included is the entire output from ansible when i ran the update script and my artifacts/eaasi.yml file

Let me know if there's anything else you'd like to see. 
The containers were all re-made at the same time, I don't know why old data is still in there...
$ sudo docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
ae6fb35f987d        nginx:latest        "nginx -g 'daemon of…"   43 minutes ago      Up 43 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   eaasi-nginx
739008f6411a        eaasi-database      "docker-entrypoint.s…"   43 minutes ago      Up 43 minutes       0.0.0.0:5432->5432/tcp                     eaasi-database
8ecbe8e714ef        nginx               "nginx -g 'daemon of…"   43 minutes ago      Up 43 minutes       80/tcp                                     nginx
127e2909aa37        eaas-custom         "/sbin/my_init"          43 minutes ago      Up 43 minutes                                                  eaas
9fc7b4de6f75        eaasi-front-end     "nginx -g 'daemon of…"   43 minutes ago      Up 43 minutes       0.0.0.0:8080->80/tcp                       eaasi-front-end

Here is the full response from the databse when looking for users -- there is no eaasi_dev user

$ sudo docker exec -it eaasi-database /bin/bash
bash-4.4# su postgres
/ $ psql eaasi_dev;
psql (11.3)
Type "help" for help.

eaasi_dev=# select * from eaasi_user;
 id |         createdAt          |         updatedAt          |  username   | firstName | lastName |         email          | roleId |         lastLogin          
----+----------------------------+----------------------------+-------------+-----------+----------+------------------------+--------+----------------------------
  1 | 2020-07-31 01:43:40.062+00 | 2020-08-04 15:17:17.512+00 | eaasi_group | prof      | eaasi    | ea...@andrew.cmu.edu   |      1 | 2020-08-04 15:17:17.511+00
  2 | 2020-08-04 16:53:08.611+00 | 2020-08-04 16:53:08.611+00 | zfurste     | Zach      | Furste   | zfu...@andrew.cmu.edu |      1 | 
  3 | 2020-08-04 16:53:10.865+00 | 2020-08-04 16:53:10.865+00 | zfurste     | Zach      | Furste   | zfu...@andrew.cmu.edu |      1 | 
  4 | 2020-08-04 16:53:15.563+00 | 2020-08-04 16:53:15.563+00 | zfurste     | Zach      | Furste   | zfu...@andrew.cmu.edu |      1 | 
  5 | 2020-08-04 16:53:17.44+00  | 2020-08-04 16:53:17.44+00  | zfurste     | Zach      | Furste   | zfu...@andrew.cmu.edu |      2 | 
  6 | 2020-08-04 16:53:18.636+00 | 2020-08-04 16:53:18.636+00 | zfurste     | Zach      | Furste   | zfu...@andrew.cmu.edu |      3 | 
(6 rows)



Thank you for your help with this it's very much appreciated,

Jonathan



jkiritharan

unread,
Oct 16, 2020, 2:40:12 PM10/16/20
to EaaSI Tech Talk
for some reason i couldn't attach files to this so here's the yaml.
---
host:
  build_dir: "/eaas-build"
  eaas_home: "/eaas-home"

docker:
  image: "eaas/eaas-appserver:eaasi-release-2019-11"
  # port: 80

  # to enable SSL with custom certificate,
  # uncomment the following lines...
  port: 443
  ssl:
   enabled: true
   certificate: "./artifacts/ssl/eaasi-prod_library_cmu_edu_cert.cer"
   private_key: "./artifacts/ssl/eaasi-prod.library.cmu.edu.key"
  network_name: "eaasi"

ui:
  git_branch: "eaasi-release-2019.11"
  http_auth:
    user: "cmu_eaasi"
    password: "eaasi_dev"

eaas:
  git_branch: "eaasi-release-2019.11"
  enable_oaipmh_provider: true
  db_upgrade: false


portal:
  git_branch: "eaasi-release-2020.03"
  db_update: true # to reset a database
  database:
    username: eaasi_dev
    password: eaasi_dev
    name: eaasi_dev
    postgres_user: eaasi_dev
    postgres_user_pw: eaasi_dev
    postgres_user_new_pw: eaasi_dev

  # Authorization / authentication settings (SAML, JWT)
  auth:

    # mailer settings, required to use the default auth method
    mailer:
      port: 587
      host: "relay.andrew.cmu.edu"
      user: "eaasi"
      password: "eaasidemo1"
      sender: "ea...@andrew.cmu.edu"

  organization:
    name: "CMU EaaSI"
  # Data Seed location for initial configured user.
  # This must be configured to install the UI
  initial_user:
    # NOTE: email must match that registered with your identity provider!
    email: "ea...@andrew.cmu.edu "
    username: "eaasi_group"
    first_name: "prof"
    last_name: "eaasi"


Andrii Kost

unread,
Oct 16, 2020, 3:34:08 PM10/16/20
to EaaSI Tech Talk
Something went really wrong, I see database records with same email which shouldn't be allowed.

The database seed script and index mapper must've not been executed.

Could you stop front-end containers and force build them:
1. Navigate to <EAASI_DIR>/portal
2. run `sudo docker container stop eaasi-nginx eaasi-front-end eaasi-web-api eaasi-database && sudo docker container rm eaasi-nginx eaasi-front-end eaasi-web-api eaasi-database && sudo docker-compose up --build -d --force-recreate`

Wait for a few moments for the application to fully boot and attempt signing in again.

Note: User and Password for mailer block of ansible config should be the username and password for smtp server, and not eaasi application.

jkiritharan

unread,
Oct 23, 2020, 1:50:25 PM10/23/20
to EaaSI Tech Talk
Unfortunately, still no luck here. should i use --no-cache because it is rebuilding with cache.

$ cd /eaas-home/portal/
kiritharan@eaasi-prod:/eaas-home/portal$ sudo docker container stop eaasi-nginx eaasi-front-end eaasi-web-api eaasi-database && sudo docker container rm eaasi-nginx eaasi-front-end eaasi-web-api eaasi-database && sudo docker-compose up --build -d --force-recreate
eaasi-nginx
eaasi-front-end
eaasi-web-api
eaasi-database
eaasi-nginx
eaasi-front-end
eaasi-web-api
eaasi-database
Building eaasi-front-end
Step 1/13 : FROM node:latest as build-stage
 ---> 4495f296c63b
Step 2/13 : WORKDIR /app
 ---> Using cache
 ---> 2bc271c3c7a3
Step 3/13 : COPY package*.json ./
 ---> Using cache
 ---> e9f44acb8e0a
Step 4/13 : RUN npm install
 ---> Using cache
 ---> 831b6e33376a
Step 5/13 : COPY ./ .
 ---> Using cache
 ---> 4b374ee339a8
Step 6/13 : RUN npm run styleguide:build
 ---> Using cache
 ---> cfcaa5f0aa9f
Step 7/13 : RUN npm run build
 ---> Using cache
 ---> 947d7dbd43c8

Step 8/13 : FROM nginx:latest as production-stage
 ---> 540a289bab6c
Step 9/13 : RUN mkdir /app
 ---> Using cache
 ---> dff644afa63b
Step 10/13 : RUN mkdir /styleguide
 ---> Using cache
 ---> a24823324211
Step 11/13 : COPY --from=build-stage /app/dist /app
 ---> Using cache
 ---> 97a0bf30c36d
Step 12/13 : COPY --from=build-stage /app/styleguide /app/styleguide
 ---> Using cache
 ---> 4dce72a655a1
Step 13/13 : COPY nginx.conf /etc/nginx/nginx.conf
 ---> Using cache
 ---> 34cf16b62215

Successfully built 34cf16b62215
Successfully tagged eaasi-front-end:latest
Building eaasi-database
Step 1/3 : FROM postgres:11.3-alpine
 ---> fd0b93397ff8
Step 2/3 : COPY ./create_user.sh   /docker-entrypoint-initdb.d/01-create_user.sh
 ---> Using cache
 ---> ab0730662354
Step 3/3 : COPY ./create_db.sh   /docker-entrypoint-initdb.d/02-create_db.sh
 ---> Using cache
 ---> abd462c65bd0

Successfully built abd462c65bd0
Successfully tagged eaasi-database:latest
Building eaasi-web-api
Step 1/14 : FROM node:10.16-alpine
 ---> b95baba1cfdb
Step 2/14 : WORKDIR /app
 ---> Using cache
 ---> 365bcdb6f663
Step 3/14 : COPY .babelrc ./
 ---> Using cache
 ---> 5329cce95503
Step 4/14 : COPY . ./
 ---> Using cache
 ---> 142c6bc42a65
Step 5/14 : RUN npm config set unsafe-perm true
 ---> Using cache
 ---> 74181925085d
Step 6/14 : RUN npm install -g babel-cli
 ---> Using cache
 ---> 0758a8e14104
Step 7/14 : RUN npm install -g apidoc
 ---> Using cache
 ---> 0832d2c62c4a
Step 8/14 : RUN npm install npx sequelize sequelize-cli sequelize-auto-migrations pg
 ---> Using cache
 ---> 62bcbeb50eaf
Step 9/14 : RUN apk update
 ---> Using cache
 ---> 8a5fa39f2ff2
Step 10/14 : RUN apk upgrade
 ---> Using cache
 ---> ce40e637e7fe
Step 11/14 : RUN apk add bash
 ---> Using cache
 ---> e2529ce2f316
Step 12/14 : RUN ["chmod", "+x", "./wait-for-it.sh"]
 ---> Using cache
 ---> a68a4717e791
Step 13/14 : RUN npm install
 ---> Using cache
 ---> b92a2a451fdb
Step 14/14 : EXPOSE 8081
 ---> Using cache
 ---> a71d4b7574be

Successfully built a71d4b7574be
Successfully tagged eaasi-web-api:latest
Creating eaasi-database  ... done
Creating eaasi-front-end ... done
Creating eaasi-web-api   ... done
Creating eaasi-nginx     ... done

I still have not been able to log in I keep getting invalid credentials message.

Based on your note:
  •  I see database records with same email which shouldn't be allowed.
I also went in to the database container and updated the emails and usernames that were in the database were the same to see if that would change anything and no luck.
 id |         createdAt          |         updatedAt          |    username     | firstName | lastName |         email          | roleId |         lastLogin          
----+----------------------------+----------------------------+-----------------+-----------+----------+------------------------+--------+----------------------------
  1 | 2020-07-31 01:43:40.062+00 | 2020-08-04 15:17:17.512+00 | eaasi_group     | prof      | eaasi    | ea...@andrew.cmu.edu   |      1 | 2020-08-04 15:17:17.511+00
  2 | 2020-08-04 16:53:08.611+00 | 2020-08-04 16:53:08.611+00 | zfurste         | Zach      | Furste   | zfu...@andrew.cmu.edu |      1 | 
  6 | 2020-08-04 16:53:18.636+00 | 2020-08-04 16:53:18.636+00 | nannerpuss      | Zach      | Furste   | fodz...@fdddooa.coo   |      3 | 
  5 | 2020-08-04 16:53:17.44+00  | 2020-08-04 16:53:17.44+00  | nanzznerpuss    | Zach      | Furste   | fodz...@fdddoo.coo    |      2 | 
  4 | 2020-08-04 16:53:15.563+00 | 2020-08-04 16:53:15.563+00 | nanzznerpusssss | Zach      | Furste   | fodz...@foo.coo       |      1 | 
  3 | 2020-08-04 16:53:10.865+00 | 2020-08-04 16:53:10.865+00 | zanzznerpusssss | Zach      | Furste   | f...@foo.coo            |      1 | 
(6 rows)

  • Note: User and Password for mailer block of ansible config should be the username and password for smtp server, and not eaasi application.


So in the mailer block i have this
mailer:
      port: 587
      host: "relay.andrew.cmu.edu"
      user: "eaasi_group"
      password: "eaasidemo1"
      sender: "ea...@andrew.cmu.edu"

Where would I set the username and password for the eaasi application in the ansible file?
within initial user I have 
  initial_user:
    # NOTE: email must match that registered with your identity provider!
    email: "ea...@andrew.cmu.edu"
    username: "eaasi_group"
    first_name: "prof"
    last_name: "eaasi"

Thanks again,

Jonathan

Andrii Kost

unread,
Oct 23, 2020, 4:07:29 PM10/23/20
to EaaSI Tech Talk

| Where would I set the username and password for the eaasi application in the ansible file?

To set an email for the initial user, set the property `email` under `initial_user` in the ansible config file.


Username is not used for authentication at the moment, email should be used instead. It will be added in the next release.


Unfortunately, there's no way to set a password for the initial user at this moment. The password for the initial user is eaasidemo1.


So in your case, initial user credentials would be:

username/email: ea...@andrew.cmu.edu

password: eaasidemo1


Based on what I see in the docker logs, everything went well during the installation. Could you share full logs for eaasi-web-api container once more? (sudo docker logs eaasi-web-api)


Thanks,


Andrii Kost

jkiritharan

unread,
Oct 23, 2020, 4:37:12 PM10/23/20
to EaaSI Tech Talk

This is the output after attempting to log in again with eaasidemo1 and the email used in the initial_user/email field - should the email address  be the same in both places?
(node:181) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 uncaughtException listeners added. Use emitter.setMaxListeners() to increase limit
Unhandled rejection SequelizeConnectionError: password authentication failed for user "eaasi_dev"
    at connection.connect.err (/app/node_modules/sequelize/lib/dialects/postgres/connection-manager.js:182:24)
    at Connection.connectingErrorHandler (/app/node_modules/pg/lib/client.js:194:14)
    at Connection.emit (events.js:198:13)
    at Socket.<anonymous> (/app/node_modules/pg/lib/connection.js:134:12)
    at Socket.emit (events.js:198:13)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)


jkiritharan

unread,
Oct 29, 2020, 12:11:31 PM10/29/20
to EaaSI Tech Talk
Just to follow up for the group we were able to get this remedied by rm -r  eaasi-home/portal/eaasi_db 
forcing a rebuild from composer sudo docker-compose up --build -d --force-recreate --no-deps
I had an issue with nginx failing to restart properly so did sudo docker-compose up --build & and it has been purring along ever since. 

Now we have access to our eaasi production instance again and the database has been reverted.

So are there any ideas as to how this happened? Does it have to do with the multiple users with identical email addresses?

Thank you again,

Jonathan
Reply all
Reply to author
Forward
0 new messages