{"id":20874676,"url":"https://github.com/neomutt/test-docker","last_synced_at":"2026-04-26T09:32:07.694Z","repository":{"id":72106988,"uuid":"159083705","full_name":"neomutt/test-docker","owner":"neomutt","description":"🐳 Docker experiments","archived":false,"fork":false,"pushed_at":"2022-06-12T19:07:22.000Z","size":12,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-12-26T20:57:34.042Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neomutt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-11-25T23:16:02.000Z","updated_at":"2023-02-27T23:05:51.000Z","dependencies_parsed_at":"2023-03-11T11:52:26.177Z","dependency_job_id":null,"html_url":"https://github.com/neomutt/test-docker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/neomutt/test-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neomutt","download_url":"https://codeload.github.com/neomutt/test-docker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neomutt%2Ftest-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32292812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T08:29:33.829Z","status":"ssl_error","status_checked_at":"2026-04-26T08:29:18.366Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-11-18T06:35:40.353Z","updated_at":"2026-04-26T09:32:07.680Z","avatar_url":"https://github.com/neomutt.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Howto\n\n### Build\n\n```sh\ngit clone https://github.com/neomutt/test-docker\ndocker build test-docker\n# ...\n# Lots of logging\n# ...\n# Successfully built IMAGE_ID\n```\n\nTo create a named image, use:\n\n```sh\ndocker build -t dovecot-img test-docker\n```\n\n### Run\n\nIf you have permission to open ports below 1024 (if you're root),\nyou can run (constraining those ports only for tcp connections):\n\n```sh\ndocker run -p 110:110/tcp -p 143:143/tcp -p 993:993/tcp -p 994:994/tcp IMAGE_ID\n```\n\notherwise, run this to map the ports to higher-number ports:\n\n```sh\ndocker run -P IMAGE_ID\n```\n\nYou probably don't want to open ports in your system if you don't need to.\nThus, you can tie it too your loopback connection only as follows. By the way,\nit seems easier to name the container since you know how to reach it. Also,\nyou can remove the container as soon as it finish the execution.\n\n```sh\ndocker run -it --rm --name=dovecot-container \\\n    -p 127.0.0.1:110:110/tcp \\\n    -p 127.0.0.1:143:143/tcp \\\n    -p 127.0.0.1:993:993/tcp \\\n    -p 127.0.0.1:994:994/tcp \\\n    dovecot-img\n```\n\n### Access\n\nTo get a shell in the Docker, find the ContainerID:\n\n```sh\ndocker container ls\n# CONTAINER ID IMAGE        ...\n# ae0090e01571 2a24eb92c691 ...\n```\n\nthen run:\n\n```sh\ndocker exec -it CONTAINER_ID /bin/sh\n```\n\n### Testing\n\nTelnet is the easier way to get a quick check using the dovecot server you\njust created\n\n```sh\ntelnet localhost 143\nTrying 127.0.0.1...\nConnected to localhost.\nEscape character is '^]'.\n* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\n```\n\nThree users are available in the container:\n\n| User       | Password  |\n| :--------- | :-------- |\n| `fulano`   | `secret`  |\n| `cicrano`  | `unknown` |\n| `beltrano` | `puzzle`  |\n\nAgain, it is possible to make a quick check while with the telnet open:\n\n```sh\na login fulano secret\n```\n\nAnd list all folders\n\n```sh\na1 list \"\" *\n```\n\nSee a full list of raw IMAP commands [here](https://donsutherland.org/crib/imap).\n\n### Cleaning up\n\nThe generated images are kept in a hidden place by docker. You can list them doing the following:\n\n```sh\ndocker images\n```\n\nRemoving an image is as easy as\n\n```sh\ndocker rmi \u003cname or hash of the image\u003e\n```\n\nHowever, no container that was created based on that image should exist. To list all the containers in your machine:\n\n```sh\ndocker ps --all\n```\n\nAnd, to remove a container:\n\n```sh\ndocker rm \u003cname or hash of the container\u003e\n```\n\n### Extra tools\n\nThe script `run-container.sh` will create a folder named as `homefs` and than create a container where that folder is used as `\\home`. Once the container server is stopped, the container itself will be auto-removed (`--rm`), however all the changes in the homefs will be kept.\n\n**Notes**:  To make `homefs` read/writable to the Docker you may also have to:\n\n- Add 'write' file permissions to everything.\n  `chmod -R og+rwX homefs`\n  All the files/dirs will appear in the Docker as owned by **your** user id.\n\n- Set the SELinux permissions on the dirs/files\n  `chcon -Rt svirt_sandbox_file_t homefs`\n  (For security, Docker isn't allowed to read from a user's home dir).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomutt%2Ftest-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneomutt%2Ftest-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneomutt%2Ftest-docker/lists"}