5.7 KiB
title: Hyvor Relay created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, email, smtp, transactional] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/hyvor/relay]
💻 Hyvor Relay
Service de mailing transactionnel open source — envoyez vos emails applicatifs (magic links, receipts, notifications) via SMTP ou API HTTP, en self-hosted, comme alternative à Postmark, SendGrid et Amazon SES.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | relay.hyvor.com |
| GitHub | hyvor/relay |
| License | AGPL-3.0 |
| Langage | PHP (Laravel) |
| Étoiles GitHub | 623 ⭐ |
| Catégorie | Development, Email Transactionnel |
| Référence | selfh.st Development |
📝 Description
Hyvor Relay est un service de mailing transactionnel self-hosted qui permet d'envoyer des emails applicatifs (confirmations, magic links, notifications, receipts, OTP) via SMTP (port 1025) ou API HTTP REST. C'est la réponse open source à Postmark, SendGrid et Amazon SES : contrôle total des données, de la délivrabilité et des métriques, sans SaaS tiers.
Développé par Hyvor (éditeur de Hyvor Talk, Hyvor Blogs), Relay mise sur la simplicité radicale : un binaire PHP, une interface web claire, le strict nécessaire (pas de marketing automation ni de templates drag&drop). Il fait une seule chose, bien : router vos emails vers un provider sortant (SES, Postmark, Mailgun, SMTP générique) avec fallback automatique.
Pour les indie hackers et SaaS self-hosted, Relay résout le casse-tête « j'ai une app Laravel, je veux envoyer 10 000 emails/mois, je ne veux pas de Postmark à 15 $/mois et je ne veux pas que Google voie mes emails ». Il suffit de pointer MAIL_HOST vers Relay (port 1025) ou d'utiliser l'API REST avec une clé.
Fonctionnalités : multi-providers avec fallback, DKIM/SPF/DMARC assistés, webhooks de bounce/spam, templates avec variables, statistiques (delivered, opened, clicked), suppression list auto, multi-tenants par clé API scopée, queue Laravel interne (Redis ou DB).
🚀 Installation
Via Docker (recommandé)
# docker-compose.yml
version: '3.8'
services:
relay:
image: hyvor/relay:latest
container_name: hyvor-relay
restart: unless-stopped
ports:
- "1025:1025" # SMTP
- "8080:8080" # Console web
environment:
APP_URL: "https://relay.example.com"
DB_HOST: db
DB_DATABASE: relay
DB_USERNAME: relay
DB_PASSWORD: ***changeme***
REDIS_HOST: redis
MAIL_FROM_ADDRESS: "noreply@example.com"
PROVIDER_TYPE: "ses" # ses | postmark | mailgun | smtp
SES_KEY: "***"
SES_SECRET: "***"
SES_REGION: "eu-west-1"
volumes:
- relay_data:/var/www/html/storage
depends_on: [db, redis]
labels:
- "traefik.enable=true"
- "traefik.http.routers.relay.rule=Host(`relay.example.com`)"
- "traefik.http.routers.relay.tls.certresolver=letsencrypt"
db:
image: mysql:8
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ***rootpass***
MYSQL_DATABASE: relay
MYSQL_USER: relay
MYSQL_PASSWORD: ***changeme***
volumes:
- relay_db:/var/lib/mysql
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
relay_data:
relay_db:
Installation manuelle
git clone https://github.com/hyvor/relay.git
cd relay
composer install --no-dev
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
php artisan serve
⚙️ Configuration
- Provider sortant (SES, Postmark, Mailgun, SMTP) — Relay relaie vers un provider avec IP dédiée, il n'envoie pas directement.
- Domaine : console > Domains > copier les enregistrements DNS (DKIM, SPF, DMARC, MX retour).
- API key scopée par domaine via
console > API Keys. - Laravel :
MAIL_MAILER=smtp,MAIL_HOST=relay.example.com,MAIL_PORT=1025,MAIL_USERNAME=<api_key>. - Webhooks : URL de bounce/spam à configurer sur le provider pour que Relay reçoive les notifications.
🔗 Alternatives
- Postmark — Référence du marché, excellent tracking, cloud uniquement et payant.
- SendGrid — Géant du transactionnel, plan gratuit 100/jour, politique de contenu stricte.
- Amazon SES — Le moins cher, mais vendor lock-in AWS.
- Postal — Serveur mail open source, plus complet (newsletters) mais plus complexe.
🔒 Sécurité
- 🔐 HTTPS obligatoire via app-traefik : les credentials SMTP et l'API key transitent en clair sinon.
- 🔒 API keys scopées : une clé par app/domaine, jamais une clé « admin » côté applicatif.
- 🛡️ DKIM/SPF/DMARC corrects : sans DNS bien configuré, vos emails tombent en spam (vérifier sur mail-tester.com).
- 🛡️ Rate limiting par clé API activé pour éviter qu'un bug n'envoie 100 000 mails.
- 🛡️ Rétention des logs d'email (30/90 j) pour la conformité RGPD.
📚 Ressources
🔗 Pages Liées
- cat-development — Catégorie Development
- app-supabase — BaaS qui peut s'appuyer sur Relay pour SMTP sortant
- app-traefik — Reverse proxy HTTPS
- securisation-home-lab — Bonnes pratiques de sécurité
- recettes-docker-compose — Templates Docker Compose