Canalwise dev

idle

Mail

sign-in codes · saved values win over the Portainer environment, which stays as the fallback · takes effect at once, no redeploy
not connected

AIS · aishub.com

optional: our AIS hub works without it (test boats' receivers) · see AIS

Setting up Brevo

once, in the 3D Print Engineering Brevo account (brevo.com, EU)
  1. Domain. Brevo › Senders, domains & dedicated IPs › Domains › Add a domain: canalwise.eu (authenticated 19 Oct 2026). Add the DNS records Brevo shows (Brevo code TXT, DKIM, and a DMARC record if the domain has none) and press Verify / Authenticate. Without it codes go to spam or are refused.
  2. Sender. Senders: on an authenticated domain any address works; we use no-reply@canalwise.eu, name Canalwise. Enter the same address as Sender address below.
  3. API key. SMTP & API › API keys › Generate a new API key, name Canalwise server. Copy it (shown once) into Brevo API key below; it is stored encrypted and never shown again here.
  4. Authorised IPs (recommended). Security › Authorised IPs: add the server's public address, so a leaked key is useless elsewhere. The first send from a new address otherwise asks for approval by email.
  5. Delivery events. Brevo › Transactional › Settings › Webhook (or Settings › Webhooks › Transactional): Add a new webhook, paste the URL below, tick the events listed, save. The overview's e-mail card then shows what was delivered, bounced or blocked.
  6. Here. Choose brevo, fill in the fields, Save, and send a test email. Brevo's own error (key not found, sender not valid, IP not authorised) is shown as it comes. Sent mail is visible in Brevo › Transactional › Logs, tagged signin-code or welcome.

Setting up Microsoft 365

once, by a Microsoft 365 admin of 3dpe.biz
  1. Sender mailbox. In the Exchange admin center, create a shared mailbox such as no-reply@3dpe.biz (shared mailboxes need no licence). Enter it as Sender address below.
  2. App registration. Entra admin center (entra.microsoft.com) › Applications › App registrations › New registration: name Canalwise mail, single tenant, no redirect URI. Copy the Application (client) ID and the Directory (tenant) ID into the fields below.
  3. Client secret. In the app: Certificates & secrets › New client secret. Copy the Value (shown once, not the Secret ID) into client secret below. Note the expiry date: mail stops when it expires.
  4. Permission to send. API permissions › Add a permission › Microsoft Graph › Application permissions › Mail.Send › Grant admin consent. This alone lets the app send as any mailbox in the tenant, so limit it to the sender mailbox in Exchange Online PowerShell (Microsoft's "RBAC for Applications"; check their current documentation for the exact steps):
    New-ServicePrincipal -AppId <client id> -ObjectId <object id of the Enterprise application> -DisplayName "Canalwise mail"
    New-ManagementScope -Name "Canalwise sender" -RecipientRestrictionFilter "PrimarySmtpAddress -eq 'no-reply@3dpe.biz'"
    New-ManagementRoleAssignment -App <client id> -Role "Application Mail.Send" -CustomResourceScope "Canalwise sender"
    then remove the tenant-wide Mail.Send consent from the app registration, so only the scoped role remains.
  5. Here. Choose microsoft365, fill in the fields, Save, and send a test email. Errors from Microsoft (wrong secret, missing permission, unknown mailbox) are shown as they come.