Interesting information for FOLIO SysAdmins

Technical documentation and design available at: https://folio-org.atlassian.net/wiki/x/exob

SMTP configuration


To
retrieve a list of SMTP entries:

GET /smtp-configuration


To create a new SMTP entry:

POST /smtp-configuration

{
     "module": "SMTP_SERVER",
     "configName": "email",
     "code": "EMAIL_FROM"
     "description": "smtp from",
     "default": true,
     "enabled": true,
     "value": "noreply@folio.org"
}


To delete a SMTP entry:

DELETE /smtp-configuration/{smtpConfigurationId}

  • Entry ID can be looked up in the result of a GET call.


To update an existing entry:

PUT /smtp-configuration/{smtpConfigurationId}

{
     "module": "SMTP_SERVER",
     "configName": "email",
     "code": "EMAIL_FROM",
     "description": "smtp from",
     "default": true,
     "enabled": true,
     "value": "noreply@folio.org"
}

  • Entry ID can be looked up in the result of a GET call.

 

Minimum viable configuration for module  SMTP_SERVER  consists of 5 entries:

  • EMAIL_SMTP_HOST
  • EMAIL_SMTP_PORT
  • EMAIL_USERNAME
  • EMAIL_PASSWORD
  • EMAIL_FROM


Custom headers

Custom headers are configured by creating entries in mod-configuration with following (required) properties

{
     "module": "SMTP_SERVER",
     "configName": "email.headers",
     "code": "HEADER_NAME_HERE",
     "value": "HEADER_VALUE_HERE"
}

 

Where HEADER_NAME_HERE should be replaced with the name of your custom header, e.g. X-SES-CONFIGURATION-SET, and HEADER_VALUE_HERE should be replaced with desired value.

Values of properties module and configName should NOT be changed, and are required in order to be discovered by mod-email and treated as custom header configurations.

You can configure as many custom headers as you want as long as they have different code values.


Troubleshooting problems 

Logical chain:

1)  Check notification system

2)  Check SMTP configuration (setup and working)

3)  Check email status (/emails):


GET /email
Available query parameters:

    • offset: (integer - default: 0 - minimum: 0 - maximum: 2147483647)
    • limit: (integer - default: 10 - minimum: 0 - maximum: 2147483647)
    • query: (string) Example: ?query=status=FAILURE
      more info about CQL: http://zing.z3950.org/cql/intro.html


Example request with parameters.
/email?limit=100&query=status=FAILURE+and+to=student@folio.org


Fields to look at:

    • status (FAILURE when sending failed)
    • message (contains error message when sending failed)


Possible error messages:

    • Error in the 'mod-email' module, the module didn't send email | message: invalid email address


SMTP configuration issues:

    • Error looking up config at url=%s | Expected status code 200, got %s | error message: %s
    • The 'mod-config' module doesn't have a minimum config for SMTP server, the min config is: %s

 

4)  Check the list of scheduled notices:
GET /scheduled-notice-storage/scheduled-notices

Notices can be filtered by loan, recipient, triggering event, etc:
GET /scheduled-notice-storage/scheduled-notices?query=recipientUserId==429d212c-c646-4c75-ba3d-c16216491123

 

5)  More on scheduled notices API: here

  • Check logs in the following modules:
    mod-circulation, mod-email, mod-template-engine, mod-sender, mod-notify

    Okapi logs:
    vagrant ssh
    /var/log/folio/okapi/okapi.log

    Specific module logs:
    vagrant ssh
    docker ps (to find container id)
    docker logs {container_id} (more on this command here)