{"id":39483284,"url":"https://github.com/leonardinius/smtpd-proxy","last_synced_at":"2026-01-18T05:17:38.169Z","repository":{"id":65198320,"uuid":"524543509","full_name":"leonardinius/smtpd-proxy","owner":"leonardinius","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-22T23:19:54.000Z","size":761,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-22T23:33:53.935Z","etag":null,"topics":["smtp","smtp-relay","smtp-relay-server","smtp-server"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leonardinius.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-08-14T01:07:39.000Z","updated_at":"2025-04-22T23:19:56.000Z","dependencies_parsed_at":"2024-03-04T21:42:53.355Z","dependency_job_id":"47493635-d341-48bb-987a-9ce4c6341026","html_url":"https://github.com/leonardinius/smtpd-proxy","commit_stats":{"total_commits":314,"total_committers":5,"mean_commits":62.8,"dds":0.2133757961783439,"last_synced_commit":"a0a62805f2e362992c205d368a07325131a7667d"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/leonardinius/smtpd-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardinius%2Fsmtpd-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardinius%2Fsmtpd-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardinius%2Fsmtpd-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardinius%2Fsmtpd-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leonardinius","download_url":"https://codeload.github.com/leonardinius/smtpd-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leonardinius%2Fsmtpd-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28530810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["smtp","smtp-relay","smtp-relay-server","smtp-server"],"created_at":"2026-01-18T05:17:38.097Z","updated_at":"2026-01-18T05:17:38.159Z","avatar_url":"https://github.com/leonardinius.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# smtpd-proxy\n\n## What it is?\n\nSMTPd-Proxy is a proxy (relay), to load balance multiple SMTP upstream servers.\n\n![what it is](docs/what-it-is.png)\n\n**Motivation**\n- E-mails and e-spam is sensitive topic. In my day-job we get our email accounts constantly suspended for days, and communicate with support to unblock.\n- The other tool we rely to supports 1 SMTP server at a time.\n- To tinker with Golang with something reasonably simple and non-trivial.\n\nThis is my first non-trivial Golang project and no doubt I have been wrongful, non idiomatic and plain stupid somewhere in the codebase. That said,\n- you are free to not use this tool,\n- you are kindly welcome to submit Contributions and provide helpful feedback to improve the code base or tool.\n\n## Installation\n\nGrab latest release from https://github.com/leonardinius/smtpd-proxy/releases/latest or build from source.\n\n**Assets**\n- [smtpd-proxy-darwin-amd64](https://github.com/leonardinius/smtpd-proxy/releases/latest/download/smtpd-proxy-darwin-amd64)\n- [smtpd-proxy-darwin-arm64](https://github.com/leonardinius/smtpd-proxy/releases/latest/download/smtpd-proxy-darwin-arm64)\n- [smtpd-proxy-linux-amd64](https://github.com/leonardinius/smtpd-proxy/releases/latest/download/smtpd-proxy-linux-amd64)\n- [smtpd-proxy-linux-arm64](https://github.com/leonardinius/smtpd-proxy/releases/latest/download/smtpd-proxy-linux-arm64)\n- [smtpd-proxy-windows-amd64.exe](https://github.com/leonardinius/smtpd-proxy/releases/latest/download/smtpd-proxy-windows-amd64.exe)\n- [smtpd-proxy-windows-arm64.exe](https://github.com/leonardinius/smtpd-proxy/releases/latest/download/smtpd-proxy-windows-arm64.exe)\n- [smtpd-proxy.yml](https://github.com/leonardinius/smtpd-proxy/releases/latest/download/smtpd-proxy.yml)\n\nTo build from source, make sure you have GNU make available.\n```shell\n$ make all\n```\n\n## Run \u0026 Configure\n\nHow-to run\n```\n./bin/smtpd-proxy --help\nUsage:\n  smtpd-proxy [OPTIONS]\n\nApplication Options:\n  -c, --configuration= smtpd-proxy.yml configuration path (default: smtpd-proxy.yml) [$SMTPD_CONFIG]\n  -v, --verbose        verbose mode [$VERBOSE]\n\nHelp Options:\n  -h, --help           Show this help message\n\nsmtpd-proxy revision dirty-gitsha1\n```\n\nConfiguration\n\n```yaml\nsmtpd-proxy:\n  # interface address smtpd-proxy will listen-to\n  # use *:1025 to bind on localhost,\n  # or 0.0.0.0:1025 to  listen on all interfaces\n  listen: 127.0.0.1:1025\n\n  # host identification\n  ehlo: localhost\n\n  # authentication.\n  username: user\n  password: secret\n  # is_anon_auth_allowed: true\n\n  # TLS cert and key.\n  # server-cert: server.crt\n  # server-key: server.key\n\n  upstream-servers:\n    - type: log\n      weight: 10\n\n    - type: smtp\n      weight: 10\n      settings:\n        # host:port to conect to\n        addr: smtp.mailtrap.io:2525\n        # host identification, optional, needed for auth\n        host: smtp.mailtrap.io\n\n        # Auth methods available: login, plain, cram-md5, anon\n        auth: plain\n        username: 8333f344d8884e\n        password: secret\n\n    - type: ses\n      weight: 1000\n      settings:\n        # AWS credentials, key ID\n        aws_access_key_id: amz-key-1\n        # AWS credentials, access secret key\n        aws_secret_access_key: amz-**-secret\n        # AWS API endpoint, e.g. localstack\n        # endpoint: http://localhost:4566\n        # region: us-east-1\n```\n\ntl;dr\n- smtpd-proxy provides SMTP, plain + login auth, TLS (not tested)\n- Upstreams: AWS SES, SMTP forward (plain, login, cram-md5), `log` for troubleshooting.\n\nExample:\n```shell\n./bin/smtpd-proxy\nsmtpd-proxy revision dirty-gitsha1\n2022-09-03T06:13:59.139+0300 info Parsing yaml at path: smtpd-proxy copy.yml\n2022-09-03T06:13:59.141+0300 info Starting server at 127.0.0.1:1025 [EHLO localhost]\n2022-09-03T06:14:38.272+0300 info log-forwarder {\"uid\": \"uid:53ee46bd42803f97\", \"From\": \"from@example.com \u003cfrom@example.com\u003e\", \"To\": [\"Mailtrap Inbox to-30080-1128@example.com \u003cto-30080-1128@exa\n```\n\n## Disclaimers\n\n_Please read this section carefully; you should understand what to expect._\n- This repo is remake of the `re:motivation` tool in spirit, no battle-tested in production. tl;dr status: Learning project.\n- Code is provided as is, and I make no promises or guarantees about this tool.\n- ⚠️ No Warranty: the subject software is provided \"as is\" without any warranty or support of any kind, either expressed, implied, or statutory. USE AT YOU OWN RISK.\n\n## Contributions\n\n- $ git checkout -b {change-subject}\n- $ make lint test\n- $ git add -A\n- $ git commit -m 'Change subject description'\n- $ git push -u origin HEAD\n- [Submit Pull Request](https://help.github.com/articles/about-pull-requests/)\n\n## Copyright\n\nThe code in this repository is copyrighted by respective authors. See LICENSE for details (MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleonardinius%2Fsmtpd-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleonardinius%2Fsmtpd-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleonardinius%2Fsmtpd-proxy/lists"}