
trashmail auto-hébergée - Recevez des e-mails via Web UI , JSON API , RSS feed et WebhookRSS feed pour chaque adresse e-mailJSON API pour l'intégrer dans vos propres projets. Peut être utilisé pour automatiser les e-mails 2FAWebhook pour l'intégrer dans vos propres projetsPlaintext , STARTTLS et TLS on connect| Point final | Explication | Exemple de sortie |
|---|---|---|
/ RSS / [email-address] | Rend RSS XML pour que les clients RSS rendent les e-mails | |
/ api / brut / [email-address]/[id] | Renvoie l'e-mail brut de l'adresse. AVERTISSEMENT: La sortie peut être aussi grande que l'e-mail lui-même, il peut donc être jusqu'à 20 Mo pour les courriers avec de grandes pièces jointes | |
/ API / Pièces jointes [email-address]/[attachment-id] | Renvoie la fixation avec le type de mime correct comme en-tête | |
/ api / delete / [email-address]/[id] | Supprime un e-mail spécifique et leurs pièces jointes | |
/ api / deleteAccount / [email-address] | Supprime tous les messages et pièces jointes de ce compte de messagerie |
| Point final | Explication | Exemple de sortie |
|---|---|---|
/ JSON / [email-address] | Renvoie une gamme d'e-mails reçus avec des liens vers les pièces jointes et le corps en texte analysé de l'e-mail. Si le courrier électronique ADMIN est entré, renvoie tous les e-mails de tous les comptes | |
/ JSON / [email-address]/[id] | Pour voir toutes les données d'un e-mail reçu, prenez l'ID de l'appel précédent et interrogez-le pour obtenir le corps brut et HTML de l'e-mail. Peut être énorme car le corps peut contenir tous les accessoires dans la base64 | |
| / json / listAccouts | Si SHOW_ACCOUNT_LIST est défini sur true dans la config.ini, ce point de terminaison renvoie un tableau de toutes les adresses e-mail qui ont reçu au moins un e-mail |
Il suffit de modifier la config.ini vous pouvez utiliser les paramètres suivants
URL -> L'URL sous laquelle l'interface graphique sera hébergée. Pas de barre de queue! Exemple: https://trashail.mydomain.euDOMAINS -> Liste des domaines séparés par les virgules sur lesquels le serveur de courrier recevra des e-mails. C'est juste pour que l'interface Web puisse générer des adresses aléatoiresMAILPORT -> Le port sur le serveur SMTP alimenté par Python écoutera. Default: 25ADMIN -> Une adresse e-mail (ne doit pas exister, il suffit d'être valide) qui répertorie tous les e-mails de toutes les adresses que le serveur a reçues. Une sorte de fourre-toutDATEFORMAT -> Comment devraient être affichés sur l'interface Web (Syntaxe Moment.js)PASSWORD -> En cas de configuration, le site et l'API ne peuvent pas être utilisés sans le fournir via le formulaire, Post / Get Variable password ou HTTP Header PWD (par exemple: curl -H "PWD: 123456" http://localhost:8080/json... )ALLOWED_IPS -> Liste séparée de virgule des adresses CIDR IPv4 ou IPv6 qui sont autorisées à utiliser l'interface utilisateur Web ou l'APIATTACHMENTS_MAX_SIZE -> taille maximale pour chaque pièce jointe individuelle d'un e-mail en octetsMAILPORT_TLS -> Si défini sur quelque chose de supérieur à 0, ce port sera utilisé pour TLSC (TLS sur Connect). Ce qui signifie que l'authentification en clair ne sera pas possible. Généralement réglé sur 465 . Besoin TLS_CERTIFICATE et TLS_PRIVATE_KEY pour fonctionnerTLS_CERTIFICATE -> Chemin vers le certificat (chaîne). Peut être par rapport au répertoire / python ou absoluTLS_PRIVATE_KEY -> Chemin vers la clé privée du certificat. Peut être par rapport au répertoire / python ou absoluWEBHOOK_URL -> Si défini, enverra une demande de message à cette URL avec les données JSON de l'e-mail en tant que corps. Peut être utilisé pour intégrer OpenntRashMail dans vos propres projetsADMIN_ENABLED -> Active le menu Admin. Par défaut falseADMIN_PASSWORD -> Si défini, a besoin de ce mot de passe pour accéder au menu Admin Dans Docker, vous pouvez utiliser les variables d'environnement suivantes:
| Env var | Ce qu'il fait | Exemples de valeurs |
|---|---|---|
| URL | L'URL de l'interface Web. Utilisé par l'API et le flux RSS | http: // localhost: 8080 |
| Discard_unknown | Dit au MailServer de supprimer ou non des e-mails qui sont adressés aux domaines qui ne sont pas configurés | Vrai, faux |
| Domaines | Les domaines de liste blanche pour lesquels le serveur écoutera. Si Discard_Unknown est défini sur False, cela ne sera utilisé que pour générer des e-mails aléatoires dans le WebInterface | |
| Show_account_list | S'il est défini sur true , tous les comptes qui ont précédemment reçu des e-mails peuvent être répertoriés via API ou WebInterface | Vrai, faux |
| Administrer | S'il est défini sur une adresse e-mail valide et cette adresse est entrée dans l'API ou WebInterface, affichera tous les e-mails de tous les comptes. Un type de fourre-tout | [email protected] |
| Dateformat | Formera la date reçue dans l'interface Web basée sur la syntaxe Moment.js | "Mmmm do Yyyy, H: MM: SS A" |
| Skip_filepermissions | S'il est défini sur true , ne corrige pas les autorisations de fichiers pour le dossier de données de code dans le conteneur. Utile pour le développement local. Par défaut false | Vrai, faux |
| MOT DE PASSE | S'il est configuré, le site et l'API ne peuvent pas être utilisés sans le fournir via le formulaire, password de la variable ou l'en-tête HTTP POST / PWD | YousrstrongPassword |
| Autorisé | Liste séparée des virgules des adresses CIDR IPv4 ou IPv6 qui sont autorisées à utiliser l'interface utilisateur Web ou l'API | 192.168.5.0/24,2a02:ab:cd:ef::/60,172.16.0.0/16 |
| Pièces jointes_max_size | Taille maximale pour chaque pièce jointe individuelle d'un e-mail en octets | 2000000 = 2 Mo |
| Mailport_TLS | S'il est défini sur quelque chose de supérieur à 0, ce port sera utilisé pour TLSC (TLS sur connexion). Ce qui signifie que l'authentification en clair ne sera pas possible. Généralement réglé sur 465 . Besoin TLS_CERTIFICATE et TLS_PRIVATE_KEY pour fonctionner | 465 |
| Tls_certificate | Chemin vers le certificat (chaîne). Peut être par rapport au répertoire / python ou absolu | /certs/cert.pem ou cert.pem si c'est à l'intérieur du répertoire Python |
| Tls_private_key | Chemin vers la clé privée du certificat. Peut être par rapport au répertoire / python ou absolu | /certs/privkey.pem ou key.pem si c'est à l'intérieur du répertoire Python |
| Webhook_url | S'il est défini, enverra une demande de message à cette URL avec les données JSON de l'e-mail en tant que corps. Peut être utilisé pour intégrer OpenntRashMail dans vos propres projets | https://example.com/webhook |
| Admin_enabled | Active le menu Admin. Par défaut false | false / true |
| Admin_password | En cas de définition, il a besoin de ce mot de passe pour accéder au menu d'administration | 123456 |
Étant donné que V1.3.0 TLS et STARTTLS sont pris en charge par OpentRashMail.
Sachez qu'il existe deux façons d'utiliser TLS avec e-mail
StartTLS ne nécessite pas de port spécifique car il démarre en texte clair, puis passe à TLS si le serveur annonce la commande "startTLS" (ce qu'OpensentRashMail fait automatiquement si le certificat et les paramètres clés sont configurés). Comme il est exécuté sur le MAILPORT par défaut, vous n'avez pas besoin d'ouvrir d'autres ports pour qu'il fonctionne.
TLS sur Connect enroule TLS autour des ports exposés, il n'est donc pas possible de lui parler en texte en clair et donc il a besoin d'un port différent pour fonctionner. Habituellement, le port 465 est utilisé pour cela.
Pour que TLS fonctionne, vous avez d'abord besoin d'un certificat qui correspond au nom d'hôte du serveur SMTP. Cela peut être fait à l'aide de Let's'encrypt et fonctionne même avec des certificats génériques.
Pour les environnements de test, vous pouvez créer un certificat en exécutant la commande suivante à l'intérieur du dossier Python:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj ' /CN=localhost ' Vous devez ensuite définir les paramètres de MAILPORT_TLS (pas nécessaires si vous souhaitez uniquement prendre en charge StartTLS), TLS_CERTIFICATE et TLS_PRIVATE_KEY .
Le fichier /docs/dev.md contient quelques conseils sur la façon de déboguer et de tester les connexions TLS et TLSC. Il utilise les swaks d'outils qui devraient être avaialables dans chaque gestionnaire de packages.
Dans votre panneau DNS, créez un enregistrement MX pour votre domaine pointant vers l'IP de l'hébergement du serveur OpenntRashMail.
L'exemple suivant vous permettra d'envoyer des e-mails à example.com
mail.example.com. IN A 93.184.216.34
example.com. 14400 IN MX 10 mail.example.com.
Cet exemple avancé vous permettra d'utiliser un domaine générique:
mail.example.com. IN A 93.184.216.34
*.example.com. 14400 IN MX 10 mail.example.com.
Ceci en combinaison avec l'option de configuration "domaines" (par exemple, paramètre docker -e DOMAINS="*.example.com" ) vous permettra d'utiliser n'importe quelle adresse avec n'importe quel sous-domaine d'exemple.com (par exemple [email protected], [email protected], etc.)
Démarrage simple sans persévérance
docker run -it -p 25:25 -p 80:80 -e URL= " https://localhost:80 " hascheksolutions/opentrashmail:1Enregistrer le répertoire de données sur la machine hôte
docker run -p 80:80 -p 25:25 -e URL= " https://localhost:80 " -v /path/on/host/where/to/save/data:/var/www/opentrashmail/data hascheksolutions/opentrashmail:1Exemple complet avec l'exécution de démon, de persistance, un domaine pour la génération automatique des e-mails, n'accepter les e-mails que pour les domaines configurés, le nettoyage pour les courriers de plus de 90 jours et le redémarrage automatique
docker run -d --restart=unless-stopped --name opentrashmail -e " DOMAINS=mydomain.eu " -e " DATEFORMAT='D.M.YYYY HH:mm' " -e " DISCARD_UNKNOWN=false " -e " DELETE_OLDER_THAN_DAYS=90 " -p 80:80 -p 25:25 -v /path/on/host/where/to/save/data:/var/www/opentrashmail/data hascheksolutions/opentrashmail:1Le cœur d'Open Trashmail est un serveur SMTP alimenté par Python qui écoute les e-mails entrants et les stocke en fichiers JSON. Le serveur n'a pas besoin de connaître le bon domaine de messagerie, il attrapera tout ce qu'il reçoit. Vous n'avez qu'à exposer le port 25 sur le Web et définir un enregistrement MX de votre domaine pointant vers l'adresse IP de votre machine.