---
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](https://relay.hyvor.com/) |
| **GitHub** | [hyvor/relay](https://github.com/hyvor/relay) |
| **License** | AGPL-3.0 |
| **Langage** | PHP (Laravel) |
| **Étoiles GitHub** | 623 ⭐ |
| **Catégorie** | Development, Email Transactionnel |
| **Référence** | [selfh.st Development](https://selfh.st/apps/?tag=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é)

```yaml
# 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

```bash
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

1. **Provider sortant** (SES, Postmark, Mailgun, SMTP) — Relay relaie vers un provider avec IP dédiée, il n'envoie pas directement.
2. **Domaine** : console > Domains > copier les enregistrements DNS (DKIM, SPF, DMARC, MX retour).
3. **API key scopée** par domaine via `console > API Keys`.
4. **Laravel** : `MAIL_MAILER=smtp`, `MAIL_HOST=relay.example.com`, `MAIL_PORT=1025`, `MAIL_USERNAME=<api_key>`.
5. **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

- [Site officiel Hyvor Relay](https://relay.hyvor.com/)
- [Documentation](https://relay.hyvor.com/docs)
- [GitHub hyvor/relay](https://github.com/hyvor/relay)
- [Selfh.st — Development](https://selfh.st/apps/?tag=Development)

## 🔗 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
