Skip to content

fix(firestore-send-email): kit/extension parity – a required placeholder SMTP_PASSWORD overrides the password in SMTP_CONNECTION_URI #3293

Open

Description

@CorieW

firestore-send-email kit/extension parity. Priority: high. After migrating, every email fails to send if the SMTP password was kept in the connection URI.

Difference

  • Extension: SMTP_PASSWORD is optional. Installs that put the password in SMTP_CONNECTION_URI (the "backwards compatible" form in the param's description) have no secret, and the URI's password is used.
  • Kit:
    • All four secrets are always bound, so SMTP_PASSWORD must exist and must not be empty. ext:migrate and functions:kits:install prompt for it, and Secret Manager rejects an empty value.
    • Any non-blank value then replaces the URI's password, the same as in the extension.
    • Users who enter a placeholder (the README recommends placeholders for the unused secrets) get an authentication failure on every send. A placeholder also adds auth to SMTP relays that need none.

Reproduced

  1. Extension installed with SMTP_CONNECTION_URI=smtp://user:pass@smtp.ethereal.email:587 and no SMTP_PASSWORD: mail sends (SUCCESS).
  2. firebase ext:migrate on that instance: it prompts "Enter a value for SMTP password". An empty answer fails with Secret Payload cannot be empty, so "placeholder" was entered.
  3. The migrated kit fails every document with delivery.error: "Error: Invalid login: 535 Authentication failed". A README-setup kit with the same URI and a placeholder secret fails the same way.
  4. Setting the secret to a single space works around it: the kit trims it to unset, and mail sends.

Code

Resolution

  • Only use SMTP_PASSWORD when the URI carries no password of its own. That is a behaviour change only for configs that set both.
  • Or, at a minimum, document in the README and the migration notes: move an inline password into SMTP_PASSWORD, or set that secret to a single space.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions