├── .gitattributes ├── .github ├── ISSUE_TEMPLATE.md └── workflows │ ├── autotest.yml │ ├── jekyll.yml │ └── validation.yml ├── .gitignore ├── CNAME ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── _data └── strings.yml ├── _includes └── authentication.html ├── _layouts └── provider.html ├── _providers ├── 163.md ├── aktivix.org.md ├── aliyun.md ├── aol.md ├── arcor.de.md ├── autistici.org.md ├── blindzeln.org.md ├── bluewin.ch.md ├── buzon.uy.md ├── chello.at.md ├── comcast.md ├── daleth.cafe.md ├── dismail.de.md ├── disroot.md ├── e.email.md ├── espiv.net.md ├── example.com.md ├── fastmail.md ├── firemail.de.md ├── five.chat.md ├── freenet.de.md ├── gmail.md ├── gmx.net.md ├── hermes.radio.md ├── hey.com.md ├── i.ua.md ├── i3.net.md ├── icloud.md ├── infomaniak.com.md ├── kolst.com.md ├── kontent.com.md ├── mail.com.md ├── mail.de.md ├── mail.ru.md ├── mail2tor.md ├── mailbox.org.md ├── mailo.com.md ├── mehl.cloud.md ├── mehl.store.md ├── migadu.md ├── nauta.cu.md ├── naver.md ├── nine.testrun.org.md ├── nubo.coop.md ├── outlook.com.md ├── ouvaton.coop.md ├── posteo.md ├── protonmail.md ├── purelymail.com.md ├── qq.md ├── rambler.ru.md ├── riseup.net.md ├── rogers.com.md ├── sonic.md ├── stinpriza.net.md ├── systemausfall.org.md ├── systemli.org.md ├── t-online.md ├── testrun.md ├── tiscali.it.md ├── tutanota.md ├── ukr.net.md ├── undernet.uy.md ├── vfemail.md ├── vivaldi.md ├── vk.com.md ├── vodafone.de.md ├── web.de.md ├── wkpb.de.md ├── yahoo.md ├── yandex.ru.md ├── yggmail.md ├── ziggo.nl.md └── zoho.md ├── assets ├── img │ └── web.de-spam-protection.png ├── normalize.css ├── provider-db-logo.svg ├── search.js └── styles.css ├── fallback.html ├── index.html ├── rust-toolchain └── validation ├── .gitignore ├── autotest.py ├── index.js ├── package-lock.json └── package.json /.gitattributes: -------------------------------------------------------------------------------- 1 | .yml text eol=lf 2 | .yaml text eol=lf 3 | .md text eol=lf -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | ## Basic information (please modify and submit) 3 | 4 | **Domain(s):** DOMAIN (the domain part of your e-mail that you tried it with) 5 | 6 | **Website of provider:** example.com 7 | 8 | **Does it work without Preparations?** YES/NO/Doesn't work at all 9 | 10 | These three points are already useful enough to submit. 11 | 12 | But if you can please provide more information below. 13 | 14 | ### following preparations from the provider side (please add links if you can): 15 | 16 | - [ ] setting a per-app password 17 | - [ ] setting an option in provider's web interface 18 | - [ ] other: please describe 19 | 20 | ### Server Settings 21 | 22 | Do you know which servers the provider uses? 23 | 24 | ``` 25 | smtp-server: smtp.example.com 26 | smtp-port: 25/465/587... 27 | smtp-security-socket: SSL/STARTTLS 28 | 29 | imap-server: imap.example.com 30 | imap-port: 993/143... 31 | imap-security-socket: SSL/STARTTLS 32 | ``` 33 | 34 | ## Other Comments 35 | 36 | How can you register at the provider? 37 | 38 | Is there anything else we need to know about the provider? 39 | 40 | -------------------------------------------------------------------------------- /.github/workflows/autotest.yml: -------------------------------------------------------------------------------- 1 | name: test IMAP & SMTP settings 2 | 3 | on: [pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v2 10 | - name: Use Python3 11 | uses: actions/setup-python@v2 12 | with: 13 | python-version: 3.x 14 | - name: run test 15 | run: | 16 | cd validation 17 | pip install pyyaml 18 | python3 autotest.py -q --path ../_providers 19 | -------------------------------------------------------------------------------- /.github/workflows/jekyll.yml: -------------------------------------------------------------------------------- 1 | name: Deploy Preview 2 | 3 | #on: [pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | env: 10 | GEM_HOME: ~/.gems 11 | 12 | steps: 13 | - name: Get Pullrequest ID 14 | id: prepare 15 | run: | 16 | PULLREQUEST_ID=$(echo "${{ github.ref }}" | cut -d "/" -f3) 17 | echo "prid=$PULLREQUEST_ID" >> $GITHUB_OUTPUT 18 | if test $(expr length "${{ secrets.USERNAME }}") -gt "1"; then 19 | echo "uploadtoserver=true" >> $GITHUB_OUTPUT 20 | fi 21 | - uses: actions/checkout@v3 22 | - name: Install Bundler 23 | run: sudo gem install bundler 24 | 25 | - name: Cache bundle 26 | uses: actions/cache@v3 27 | with: 28 | path: vendor/bundle 29 | key: ${{ runner.os }}-gems-${{ hashFiles('Gemfile.lock') }} 30 | restore-keys: | 31 | ${{ runner.os }}-gems- 32 | 33 | - name: Install Jekyll 34 | run: bundle install 35 | 36 | - name: Build the site with Jekyll 37 | run: | 38 | bundle exec jekyll build --future --baseurl "/${{ steps.prepare.outputs.prid }}" 39 | mkdir ${{ steps.prepare.outputs.prid }} 40 | 41 | - name: Upload preview 42 | if: steps.prepare.outputs.uploadtoserver 43 | run: | 44 | mkdir -p "$HOME/.ssh" 45 | echo "${{ secrets.KEY }}" > "$HOME/.ssh/key" 46 | chmod 600 "$HOME/.ssh/key" 47 | # rsync -avzh -e "ssh -i $HOME/.ssh/key -o StrictHostKeyChecking=no" $GITHUB_WORKSPACE/_site/ "${{ secrets.USERNAME }}@mailadm.testrun.org:providerOverview/${{ steps.prepare.outputs.prid }}/" 48 | 49 | # - name: Post links to details 50 | # if: steps.prepare.outputs.uploadtoserver 51 | # id: details 52 | # run: | 53 | # # Post preview link to details. 54 | # GITHUB_API_URL="https://api.github.com/repos/deltachat/provider-db/statuses/${{ github.event.after }}" 55 | # PREVIEW_LINK="https://mailadm.testrun.org/provider/${{ steps.prepare.outputs.prid }}/" 56 | # STATUS_DATA="{\"state\": \"success\", \ 57 | # \"description\": \"Preview the page here:\", \ 58 | # \"context\": \"Page Preview\", \ 59 | # \"target_url\": \"${PREVIEW_LINK}\"}" 60 | # curl -X POST --header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" --url "$GITHUB_API_URL" --header "content-type: application/json" --data "$STATUS_DATA" 61 | 62 | # # Check if the comment already exists. 63 | # GITHUB_API_URL="https://api.github.com/repos/deltachat/provider-db/issues/${{ steps.prepare.outputs.prid }}/comments" 64 | # RESPONSE=$(curl -L --header "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" --url "$GITHUB_API_URL" --header "content-type: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28") 65 | # echo $RESPONSE > result 66 | # grep -v '"Check out the page preview at https://mailadm.testrun.org/' result && echo "comment=true" >> $GITHUB_OUTPUT || true 67 | 68 | # - name: Post link to comments 69 | # if: steps.details.outputs.comment 70 | # uses: actions/github-script@v6 71 | # with: 72 | # script: | 73 | # github.rest.issues.createComment({ 74 | # issue_number: context.issue.number, 75 | # owner: context.repo.owner, 76 | # repo: context.repo.repo, 77 | # body: "Check out the page preview at https://mailadm.testrun.org/provider/${{ steps.prepare.outputs.prid }}/" 78 | # }) 79 | -------------------------------------------------------------------------------- /.github/workflows/validation.yml: -------------------------------------------------------------------------------- 1 | name: validation 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - uses: actions/checkout@v1 10 | - name: Use Node.js 12.x 11 | uses: actions/setup-node@v1 12 | with: 13 | node-version: 12.x 14 | - name: npm install and test 15 | run: | 16 | cd validation 17 | npm ci 18 | npm run test 19 | env: 20 | CI: true -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _site 2 | /vendor 3 | .bundle 4 | 5 | # Cargo / Rust 6 | 7 | /target 8 | **/*.rs.bk 9 | .vscode 10 | .idea 11 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | providers.delta.chat -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "github-pages", group: :jekyll_plugins 4 | 5 | gem "jekyll-include-cache", "~> 0.2.0" 6 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | activesupport (6.0.6) 5 | concurrent-ruby (~> 1.0, >= 1.0.2) 6 | i18n (>= 0.7, < 2) 7 | minitest (~> 5.1) 8 | tzinfo (~> 1.1) 9 | zeitwerk (~> 2.2, >= 2.2.2) 10 | addressable (2.8.1) 11 | public_suffix (>= 2.0.2, < 6.0) 12 | coffee-script (2.4.1) 13 | coffee-script-source 14 | execjs 15 | coffee-script-source (1.11.1) 16 | colorator (1.1.0) 17 | commonmarker (0.23.6) 18 | concurrent-ruby (1.1.10) 19 | dnsruby (1.61.9) 20 | simpleidn (~> 0.1) 21 | em-websocket (0.5.3) 22 | eventmachine (>= 0.12.9) 23 | http_parser.rb (~> 0) 24 | ethon (0.15.0) 25 | ffi (>= 1.15.0) 26 | eventmachine (1.2.7) 27 | execjs (2.8.1) 28 | faraday (2.6.0) 29 | faraday-net_http (>= 2.0, < 3.1) 30 | ruby2_keywords (>= 0.0.4) 31 | faraday-net_http (3.0.1) 32 | ffi (1.15.5) 33 | forwardable-extended (2.6.0) 34 | gemoji (3.0.1) 35 | github-pages (227) 36 | github-pages-health-check (= 1.17.9) 37 | jekyll (= 3.9.2) 38 | jekyll-avatar (= 0.7.0) 39 | jekyll-coffeescript (= 1.1.1) 40 | jekyll-commonmark-ghpages (= 0.2.0) 41 | jekyll-default-layout (= 0.1.4) 42 | jekyll-feed (= 0.15.1) 43 | jekyll-gist (= 1.5.0) 44 | jekyll-github-metadata (= 2.13.0) 45 | jekyll-include-cache (= 0.2.1) 46 | jekyll-mentions (= 1.6.0) 47 | jekyll-optional-front-matter (= 0.3.2) 48 | jekyll-paginate (= 1.1.0) 49 | jekyll-readme-index (= 0.3.0) 50 | jekyll-redirect-from (= 0.16.0) 51 | jekyll-relative-links (= 0.6.1) 52 | jekyll-remote-theme (= 0.4.3) 53 | jekyll-sass-converter (= 1.5.2) 54 | jekyll-seo-tag (= 2.8.0) 55 | jekyll-sitemap (= 1.4.0) 56 | jekyll-swiss (= 1.0.0) 57 | jekyll-theme-architect (= 0.2.0) 58 | jekyll-theme-cayman (= 0.2.0) 59 | jekyll-theme-dinky (= 0.2.0) 60 | jekyll-theme-hacker (= 0.2.0) 61 | jekyll-theme-leap-day (= 0.2.0) 62 | jekyll-theme-merlot (= 0.2.0) 63 | jekyll-theme-midnight (= 0.2.0) 64 | jekyll-theme-minimal (= 0.2.0) 65 | jekyll-theme-modernist (= 0.2.0) 66 | jekyll-theme-primer (= 0.6.0) 67 | jekyll-theme-slate (= 0.2.0) 68 | jekyll-theme-tactile (= 0.2.0) 69 | jekyll-theme-time-machine (= 0.2.0) 70 | jekyll-titles-from-headings (= 0.5.3) 71 | jemoji (= 0.12.0) 72 | kramdown (= 2.3.2) 73 | kramdown-parser-gfm (= 1.1.0) 74 | liquid (= 4.0.3) 75 | mercenary (~> 0.3) 76 | minima (= 2.5.1) 77 | nokogiri (>= 1.13.6, < 2.0) 78 | rouge (= 3.26.0) 79 | terminal-table (~> 1.4) 80 | github-pages-health-check (1.17.9) 81 | addressable (~> 2.3) 82 | dnsruby (~> 1.60) 83 | octokit (~> 4.0) 84 | public_suffix (>= 3.0, < 5.0) 85 | typhoeus (~> 1.3) 86 | html-pipeline (2.14.3) 87 | activesupport (>= 2) 88 | nokogiri (>= 1.4) 89 | http_parser.rb (0.8.0) 90 | i18n (0.9.5) 91 | concurrent-ruby (~> 1.0) 92 | jekyll (3.9.2) 93 | addressable (~> 2.4) 94 | colorator (~> 1.0) 95 | em-websocket (~> 0.5) 96 | i18n (~> 0.7) 97 | jekyll-sass-converter (~> 1.0) 98 | jekyll-watch (~> 2.0) 99 | kramdown (>= 1.17, < 3) 100 | liquid (~> 4.0) 101 | mercenary (~> 0.3.3) 102 | pathutil (~> 0.9) 103 | rouge (>= 1.7, < 4) 104 | safe_yaml (~> 1.0) 105 | jekyll-avatar (0.7.0) 106 | jekyll (>= 3.0, < 5.0) 107 | jekyll-coffeescript (1.1.1) 108 | coffee-script (~> 2.2) 109 | coffee-script-source (~> 1.11.1) 110 | jekyll-commonmark (1.4.0) 111 | commonmarker (~> 0.22) 112 | jekyll-commonmark-ghpages (0.2.0) 113 | commonmarker (~> 0.23.4) 114 | jekyll (~> 3.9.0) 115 | jekyll-commonmark (~> 1.4.0) 116 | rouge (>= 2.0, < 4.0) 117 | jekyll-default-layout (0.1.4) 118 | jekyll (~> 3.0) 119 | jekyll-feed (0.15.1) 120 | jekyll (>= 3.7, < 5.0) 121 | jekyll-gist (1.5.0) 122 | octokit (~> 4.2) 123 | jekyll-github-metadata (2.13.0) 124 | jekyll (>= 3.4, < 5.0) 125 | octokit (~> 4.0, != 4.4.0) 126 | jekyll-include-cache (0.2.1) 127 | jekyll (>= 3.7, < 5.0) 128 | jekyll-mentions (1.6.0) 129 | html-pipeline (~> 2.3) 130 | jekyll (>= 3.7, < 5.0) 131 | jekyll-optional-front-matter (0.3.2) 132 | jekyll (>= 3.0, < 5.0) 133 | jekyll-paginate (1.1.0) 134 | jekyll-readme-index (0.3.0) 135 | jekyll (>= 3.0, < 5.0) 136 | jekyll-redirect-from (0.16.0) 137 | jekyll (>= 3.3, < 5.0) 138 | jekyll-relative-links (0.6.1) 139 | jekyll (>= 3.3, < 5.0) 140 | jekyll-remote-theme (0.4.3) 141 | addressable (~> 2.0) 142 | jekyll (>= 3.5, < 5.0) 143 | jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) 144 | rubyzip (>= 1.3.0, < 3.0) 145 | jekyll-sass-converter (1.5.2) 146 | sass (~> 3.4) 147 | jekyll-seo-tag (2.8.0) 148 | jekyll (>= 3.8, < 5.0) 149 | jekyll-sitemap (1.4.0) 150 | jekyll (>= 3.7, < 5.0) 151 | jekyll-swiss (1.0.0) 152 | jekyll-theme-architect (0.2.0) 153 | jekyll (> 3.5, < 5.0) 154 | jekyll-seo-tag (~> 2.0) 155 | jekyll-theme-cayman (0.2.0) 156 | jekyll (> 3.5, < 5.0) 157 | jekyll-seo-tag (~> 2.0) 158 | jekyll-theme-dinky (0.2.0) 159 | jekyll (> 3.5, < 5.0) 160 | jekyll-seo-tag (~> 2.0) 161 | jekyll-theme-hacker (0.2.0) 162 | jekyll (> 3.5, < 5.0) 163 | jekyll-seo-tag (~> 2.0) 164 | jekyll-theme-leap-day (0.2.0) 165 | jekyll (> 3.5, < 5.0) 166 | jekyll-seo-tag (~> 2.0) 167 | jekyll-theme-merlot (0.2.0) 168 | jekyll (> 3.5, < 5.0) 169 | jekyll-seo-tag (~> 2.0) 170 | jekyll-theme-midnight (0.2.0) 171 | jekyll (> 3.5, < 5.0) 172 | jekyll-seo-tag (~> 2.0) 173 | jekyll-theme-minimal (0.2.0) 174 | jekyll (> 3.5, < 5.0) 175 | jekyll-seo-tag (~> 2.0) 176 | jekyll-theme-modernist (0.2.0) 177 | jekyll (> 3.5, < 5.0) 178 | jekyll-seo-tag (~> 2.0) 179 | jekyll-theme-primer (0.6.0) 180 | jekyll (> 3.5, < 5.0) 181 | jekyll-github-metadata (~> 2.9) 182 | jekyll-seo-tag (~> 2.0) 183 | jekyll-theme-slate (0.2.0) 184 | jekyll (> 3.5, < 5.0) 185 | jekyll-seo-tag (~> 2.0) 186 | jekyll-theme-tactile (0.2.0) 187 | jekyll (> 3.5, < 5.0) 188 | jekyll-seo-tag (~> 2.0) 189 | jekyll-theme-time-machine (0.2.0) 190 | jekyll (> 3.5, < 5.0) 191 | jekyll-seo-tag (~> 2.0) 192 | jekyll-titles-from-headings (0.5.3) 193 | jekyll (>= 3.3, < 5.0) 194 | jekyll-watch (2.2.1) 195 | listen (~> 3.0) 196 | jemoji (0.12.0) 197 | gemoji (~> 3.0) 198 | html-pipeline (~> 2.2) 199 | jekyll (>= 3.0, < 5.0) 200 | kramdown (2.3.2) 201 | rexml 202 | kramdown-parser-gfm (1.1.0) 203 | kramdown (~> 2.0) 204 | liquid (4.0.3) 205 | listen (3.7.1) 206 | rb-fsevent (~> 0.10, >= 0.10.3) 207 | rb-inotify (~> 0.9, >= 0.9.10) 208 | mercenary (0.3.6) 209 | minima (2.5.1) 210 | jekyll (>= 3.5, < 5.0) 211 | jekyll-feed (~> 0.9) 212 | jekyll-seo-tag (~> 2.1) 213 | minitest (5.16.3) 214 | nokogiri (1.13.9-x86_64-linux) 215 | racc (~> 1.4) 216 | octokit (4.25.1) 217 | faraday (>= 1, < 3) 218 | sawyer (~> 0.9) 219 | pathutil (0.16.2) 220 | forwardable-extended (~> 2.6) 221 | public_suffix (4.0.7) 222 | racc (1.6.0) 223 | rb-fsevent (0.11.2) 224 | rb-inotify (0.10.1) 225 | ffi (~> 1.0) 226 | rexml (3.2.5) 227 | rouge (3.26.0) 228 | ruby2_keywords (0.0.5) 229 | rubyzip (2.3.2) 230 | safe_yaml (1.0.5) 231 | sass (3.7.4) 232 | sass-listen (~> 4.0.0) 233 | sass-listen (4.0.0) 234 | rb-fsevent (~> 0.9, >= 0.9.4) 235 | rb-inotify (~> 0.9, >= 0.9.7) 236 | sawyer (0.9.2) 237 | addressable (>= 2.3.5) 238 | faraday (>= 0.17.3, < 3) 239 | simpleidn (0.2.1) 240 | unf (~> 0.1.4) 241 | terminal-table (1.8.0) 242 | unicode-display_width (~> 1.1, >= 1.1.1) 243 | thread_safe (0.3.6) 244 | typhoeus (1.4.0) 245 | ethon (>= 0.9.0) 246 | tzinfo (1.2.10) 247 | thread_safe (~> 0.1) 248 | unf (0.1.4) 249 | unf_ext 250 | unf_ext (0.0.8.2) 251 | unicode-display_width (1.8.0) 252 | zeitwerk (2.6.4) 253 | 254 | PLATFORMS 255 | x86_64-linux-musl 256 | 257 | DEPENDENCIES 258 | github-pages 259 | jekyll-include-cache (~> 0.2.0) 260 | 261 | BUNDLED WITH 262 | 2.3.23 263 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Mozilla Public License Version 2.0 2 | ================================== 3 | 4 | 1. Definitions 5 | -------------- 6 | 7 | 1.1. "Contributor" 8 | means each individual or legal entity that creates, contributes to 9 | the creation of, or owns Covered Software. 10 | 11 | 1.2. "Contributor Version" 12 | means the combination of the Contributions of others (if any) used 13 | by a Contributor and that particular Contributor's Contribution. 14 | 15 | 1.3. "Contribution" 16 | means Covered Software of a particular Contributor. 17 | 18 | 1.4. "Covered Software" 19 | means Source Code Form to which the initial Contributor has attached 20 | the notice in Exhibit A, the Executable Form of such Source Code 21 | Form, and Modifications of such Source Code Form, in each case 22 | including portions thereof. 23 | 24 | 1.5. "Incompatible With Secondary Licenses" 25 | means 26 | 27 | (a) that the initial Contributor has attached the notice described 28 | in Exhibit B to the Covered Software; or 29 | 30 | (b) that the Covered Software was made available under the terms of 31 | version 1.1 or earlier of the License, but not also under the 32 | terms of a Secondary License. 33 | 34 | 1.6. "Executable Form" 35 | means any form of the work other than Source Code Form. 36 | 37 | 1.7. "Larger Work" 38 | means a work that combines Covered Software with other material, in 39 | a separate file or files, that is not Covered Software. 40 | 41 | 1.8. "License" 42 | means this document. 43 | 44 | 1.9. "Licensable" 45 | means having the right to grant, to the maximum extent possible, 46 | whether at the time of the initial grant or subsequently, any and 47 | all of the rights conveyed by this License. 48 | 49 | 1.10. "Modifications" 50 | means any of the following: 51 | 52 | (a) any file in Source Code Form that results from an addition to, 53 | deletion from, or modification of the contents of Covered 54 | Software; or 55 | 56 | (b) any new file in Source Code Form that contains any Covered 57 | Software. 58 | 59 | 1.11. "Patent Claims" of a Contributor 60 | means any patent claim(s), including without limitation, method, 61 | process, and apparatus claims, in any patent Licensable by such 62 | Contributor that would be infringed, but for the grant of the 63 | License, by the making, using, selling, offering for sale, having 64 | made, import, or transfer of either its Contributions or its 65 | Contributor Version. 66 | 67 | 1.12. "Secondary License" 68 | means either the GNU General Public License, Version 2.0, the GNU 69 | Lesser General Public License, Version 2.1, the GNU Affero General 70 | Public License, Version 3.0, or any later versions of those 71 | licenses. 72 | 73 | 1.13. "Source Code Form" 74 | means the form of the work preferred for making modifications. 75 | 76 | 1.14. "You" (or "Your") 77 | means an individual or a legal entity exercising rights under this 78 | License. For legal entities, "You" includes any entity that 79 | controls, is controlled by, or is under common control with You. For 80 | purposes of this definition, "control" means (a) the power, direct 81 | or indirect, to cause the direction or management of such entity, 82 | whether by contract or otherwise, or (b) ownership of more than 83 | fifty percent (50%) of the outstanding shares or beneficial 84 | ownership of such entity. 85 | 86 | 2. License Grants and Conditions 87 | -------------------------------- 88 | 89 | 2.1. Grants 90 | 91 | Each Contributor hereby grants You a world-wide, royalty-free, 92 | non-exclusive license: 93 | 94 | (a) under intellectual property rights (other than patent or trademark) 95 | Licensable by such Contributor to use, reproduce, make available, 96 | modify, display, perform, distribute, and otherwise exploit its 97 | Contributions, either on an unmodified basis, with Modifications, or 98 | as part of a Larger Work; and 99 | 100 | (b) under Patent Claims of such Contributor to make, use, sell, offer 101 | for sale, have made, import, and otherwise transfer either its 102 | Contributions or its Contributor Version. 103 | 104 | 2.2. Effective Date 105 | 106 | The licenses granted in Section 2.1 with respect to any Contribution 107 | become effective for each Contribution on the date the Contributor first 108 | distributes such Contribution. 109 | 110 | 2.3. Limitations on Grant Scope 111 | 112 | The licenses granted in this Section 2 are the only rights granted under 113 | this License. No additional rights or licenses will be implied from the 114 | distribution or licensing of Covered Software under this License. 115 | Notwithstanding Section 2.1(b) above, no patent license is granted by a 116 | Contributor: 117 | 118 | (a) for any code that a Contributor has removed from Covered Software; 119 | or 120 | 121 | (b) for infringements caused by: (i) Your and any other third party's 122 | modifications of Covered Software, or (ii) the combination of its 123 | Contributions with other software (except as part of its Contributor 124 | Version); or 125 | 126 | (c) under Patent Claims infringed by Covered Software in the absence of 127 | its Contributions. 128 | 129 | This License does not grant any rights in the trademarks, service marks, 130 | or logos of any Contributor (except as may be necessary to comply with 131 | the notice requirements in Section 3.4). 132 | 133 | 2.4. Subsequent Licenses 134 | 135 | No Contributor makes additional grants as a result of Your choice to 136 | distribute the Covered Software under a subsequent version of this 137 | License (see Section 10.2) or under the terms of a Secondary License (if 138 | permitted under the terms of Section 3.3). 139 | 140 | 2.5. Representation 141 | 142 | Each Contributor represents that the Contributor believes its 143 | Contributions are its original creation(s) or it has sufficient rights 144 | to grant the rights to its Contributions conveyed by this License. 145 | 146 | 2.6. Fair Use 147 | 148 | This License is not intended to limit any rights You have under 149 | applicable copyright doctrines of fair use, fair dealing, or other 150 | equivalents. 151 | 152 | 2.7. Conditions 153 | 154 | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted 155 | in Section 2.1. 156 | 157 | 3. Responsibilities 158 | ------------------- 159 | 160 | 3.1. Distribution of Source Form 161 | 162 | All distribution of Covered Software in Source Code Form, including any 163 | Modifications that You create or to which You contribute, must be under 164 | the terms of this License. You must inform recipients that the Source 165 | Code Form of the Covered Software is governed by the terms of this 166 | License, and how they can obtain a copy of this License. You may not 167 | attempt to alter or restrict the recipients' rights in the Source Code 168 | Form. 169 | 170 | 3.2. Distribution of Executable Form 171 | 172 | If You distribute Covered Software in Executable Form then: 173 | 174 | (a) such Covered Software must also be made available in Source Code 175 | Form, as described in Section 3.1, and You must inform recipients of 176 | the Executable Form how they can obtain a copy of such Source Code 177 | Form by reasonable means in a timely manner, at a charge no more 178 | than the cost of distribution to the recipient; and 179 | 180 | (b) You may distribute such Executable Form under the terms of this 181 | License, or sublicense it under different terms, provided that the 182 | license for the Executable Form does not attempt to limit or alter 183 | the recipients' rights in the Source Code Form under this License. 184 | 185 | 3.3. Distribution of a Larger Work 186 | 187 | You may create and distribute a Larger Work under terms of Your choice, 188 | provided that You also comply with the requirements of this License for 189 | the Covered Software. If the Larger Work is a combination of Covered 190 | Software with a work governed by one or more Secondary Licenses, and the 191 | Covered Software is not Incompatible With Secondary Licenses, this 192 | License permits You to additionally distribute such Covered Software 193 | under the terms of such Secondary License(s), so that the recipient of 194 | the Larger Work may, at their option, further distribute the Covered 195 | Software under the terms of either this License or such Secondary 196 | License(s). 197 | 198 | 3.4. Notices 199 | 200 | You may not remove or alter the substance of any license notices 201 | (including copyright notices, patent notices, disclaimers of warranty, 202 | or limitations of liability) contained within the Source Code Form of 203 | the Covered Software, except that You may alter any license notices to 204 | the extent required to remedy known factual inaccuracies. 205 | 206 | 3.5. Application of Additional Terms 207 | 208 | You may choose to offer, and to charge a fee for, warranty, support, 209 | indemnity or liability obligations to one or more recipients of Covered 210 | Software. However, You may do so only on Your own behalf, and not on 211 | behalf of any Contributor. You must make it absolutely clear that any 212 | such warranty, support, indemnity, or liability obligation is offered by 213 | You alone, and You hereby agree to indemnify every Contributor for any 214 | liability incurred by such Contributor as a result of warranty, support, 215 | indemnity or liability terms You offer. You may include additional 216 | disclaimers of warranty and limitations of liability specific to any 217 | jurisdiction. 218 | 219 | 4. Inability to Comply Due to Statute or Regulation 220 | --------------------------------------------------- 221 | 222 | If it is impossible for You to comply with any of the terms of this 223 | License with respect to some or all of the Covered Software due to 224 | statute, judicial order, or regulation then You must: (a) comply with 225 | the terms of this License to the maximum extent possible; and (b) 226 | describe the limitations and the code they affect. Such description must 227 | be placed in a text file included with all distributions of the Covered 228 | Software under this License. Except to the extent prohibited by statute 229 | or regulation, such description must be sufficiently detailed for a 230 | recipient of ordinary skill to be able to understand it. 231 | 232 | 5. Termination 233 | -------------- 234 | 235 | 5.1. The rights granted under this License will terminate automatically 236 | if You fail to comply with any of its terms. However, if You become 237 | compliant, then the rights granted under this License from a particular 238 | Contributor are reinstated (a) provisionally, unless and until such 239 | Contributor explicitly and finally terminates Your grants, and (b) on an 240 | ongoing basis, if such Contributor fails to notify You of the 241 | non-compliance by some reasonable means prior to 60 days after You have 242 | come back into compliance. Moreover, Your grants from a particular 243 | Contributor are reinstated on an ongoing basis if such Contributor 244 | notifies You of the non-compliance by some reasonable means, this is the 245 | first time You have received notice of non-compliance with this License 246 | from such Contributor, and You become compliant prior to 30 days after 247 | Your receipt of the notice. 248 | 249 | 5.2. If You initiate litigation against any entity by asserting a patent 250 | infringement claim (excluding declaratory judgment actions, 251 | counter-claims, and cross-claims) alleging that a Contributor Version 252 | directly or indirectly infringes any patent, then the rights granted to 253 | You by any and all Contributors for the Covered Software under Section 254 | 2.1 of this License shall terminate. 255 | 256 | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all 257 | end user license agreements (excluding distributors and resellers) which 258 | have been validly granted by You or Your distributors under this License 259 | prior to termination shall survive termination. 260 | 261 | ************************************************************************ 262 | * * 263 | * 6. Disclaimer of Warranty * 264 | * ------------------------- * 265 | * * 266 | * Covered Software is provided under this License on an "as is" * 267 | * basis, without warranty of any kind, either expressed, implied, or * 268 | * statutory, including, without limitation, warranties that the * 269 | * Covered Software is free of defects, merchantable, fit for a * 270 | * particular purpose or non-infringing. The entire risk as to the * 271 | * quality and performance of the Covered Software is with You. * 272 | * Should any Covered Software prove defective in any respect, You * 273 | * (not any Contributor) assume the cost of any necessary servicing, * 274 | * repair, or correction. This disclaimer of warranty constitutes an * 275 | * essential part of this License. No use of any Covered Software is * 276 | * authorized under this License except under this disclaimer. * 277 | * * 278 | ************************************************************************ 279 | 280 | ************************************************************************ 281 | * * 282 | * 7. Limitation of Liability * 283 | * -------------------------- * 284 | * * 285 | * Under no circumstances and under no legal theory, whether tort * 286 | * (including negligence), contract, or otherwise, shall any * 287 | * Contributor, or anyone who distributes Covered Software as * 288 | * permitted above, be liable to You for any direct, indirect, * 289 | * special, incidental, or consequential damages of any character * 290 | * including, without limitation, damages for lost profits, loss of * 291 | * goodwill, work stoppage, computer failure or malfunction, or any * 292 | * and all other commercial damages or losses, even if such party * 293 | * shall have been informed of the possibility of such damages. This * 294 | * limitation of liability shall not apply to liability for death or * 295 | * personal injury resulting from such party's negligence to the * 296 | * extent applicable law prohibits such limitation. Some * 297 | * jurisdictions do not allow the exclusion or limitation of * 298 | * incidental or consequential damages, so this exclusion and * 299 | * limitation may not apply to You. * 300 | * * 301 | ************************************************************************ 302 | 303 | 8. Litigation 304 | ------------- 305 | 306 | Any litigation relating to this License may be brought only in the 307 | courts of a jurisdiction where the defendant maintains its principal 308 | place of business and such litigation shall be governed by laws of that 309 | jurisdiction, without reference to its conflict-of-law provisions. 310 | Nothing in this Section shall prevent a party's ability to bring 311 | cross-claims or counter-claims. 312 | 313 | 9. Miscellaneous 314 | ---------------- 315 | 316 | This License represents the complete agreement concerning the subject 317 | matter hereof. If any provision of this License is held to be 318 | unenforceable, such provision shall be reformed only to the extent 319 | necessary to make it enforceable. Any law or regulation which provides 320 | that the language of a contract shall be construed against the drafter 321 | shall not be used to construe this License against a Contributor. 322 | 323 | 10. Versions of the License 324 | --------------------------- 325 | 326 | 10.1. New Versions 327 | 328 | Mozilla Foundation is the license steward. Except as provided in Section 329 | 10.3, no one other than the license steward has the right to modify or 330 | publish new versions of this License. Each version will be given a 331 | distinguishing version number. 332 | 333 | 10.2. Effect of New Versions 334 | 335 | You may distribute the Covered Software under the terms of the version 336 | of the License under which You originally received the Covered Software, 337 | or under the terms of any subsequent version published by the license 338 | steward. 339 | 340 | 10.3. Modified Versions 341 | 342 | If you create software not governed by this License, and you want to 343 | create a new license for such software, you may create and use a 344 | modified version of this License if you rename the license and remove 345 | any references to the name of the license steward (except to note that 346 | such modified license differs from this License). 347 | 348 | 10.4. Distributing Source Code Form that is Incompatible With Secondary 349 | Licenses 350 | 351 | If You choose to distribute Source Code Form that is Incompatible With 352 | Secondary Licenses under the terms of this version of the License, the 353 | notice described in Exhibit B of this License must be attached. 354 | 355 | Exhibit A - Source Code Form License Notice 356 | ------------------------------------------- 357 | 358 | This Source Code Form is subject to the terms of the Mozilla Public 359 | License, v. 2.0. If a copy of the MPL was not distributed with this 360 | file, You can obtain one at http://mozilla.org/MPL/2.0/. 361 | 362 | If it is not possible or desirable to put the notice in a particular 363 | file, then You may include the notice in a location (such as a LICENSE 364 | file in a relevant directory) where a recipient would be likely to look 365 | for such a notice. 366 | 367 | You may add additional accurate notices of copyright ownership. 368 | 369 | Exhibit B - "Incompatible With Secondary Licenses" Notice 370 | --------------------------------------------------------- 371 | 372 | This Source Code Form is "Incompatible With Secondary Licenses", as 373 | defined by the Mozilla Public License, v. 2.0. 374 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # E-mail provider database 2 | 3 | This repository collects information on email providers and their interoperability which is used by the chatmail/core library. 4 | 5 | **The header of the files,** the _front matter_, is included into [chatmail/core](https://github.com/chatmail/core), 6 | to provide them to the [chatmail apps](https://chatmail.at/clients) on the different platforms. 7 | Update is done by setting the desired commit as `REV=` 8 | in [chatmail/core/scripts/create-provider-data-rs.py](https://github.com/chatmail/core/blob/main/scripts/create-provider-data-rs.py) and the run the script. 9 | 10 | **The page's content** is built into a web page 11 | that shows the status of the respective provider regarding its usage with chatmail apps, 12 | and details possibly required preparation steps, or explains why the interoperability is broken. 13 | 14 | 15 | ## Format 16 | 17 | The files build on this format: 18 | 19 | ```yaml 20 | --- 21 | name: [name of the provider] 22 | status: [OK or PREPARATION or BROKEN] 23 | domains: 24 | - an_array 25 | - of_domains 26 | - used_by_this_provider 27 | opt: 28 | max_smtp_rcpt_to: [optional: default is 50] 29 | strict_tls: [optional: default is true] 30 | server: 31 | # Repeat the following block for each server (usually one for imap, one for smtp). 32 | # If no servers are defined, autoconfig, autodiscover or guessing is used; 33 | # this will lead to the same server-configuration as if there is no provider-entry at all. 34 | - type: [IMAP or SMTP] 35 | socket: [SSL or STARTTLS or PLAIN] 36 | hostname: [hostname to connect to] 37 | port: [port number] 38 | username_pattern: [optional: EMAIL or EMAILLOCALPART, default is EMAIL] 39 | before_login_hint: | 40 | [required for status PREPARATION or BROKEN: a string that will be displayed before the user logs in. 41 | Multiple lines are possible (line-breaks will be honoured), but keep in mind this text appears within the login form on possibly small displays. 42 | ] 43 | after_login_hint: | 44 | [optional: a string that will be displayed in the device chat after the user logged in. 45 | Multiple lines are possible (line-breaks will be honoured). 46 | There's more room for text in the device chat than in the login form, but please keep the text concise nonetheless. 47 | ] 48 | config_defaults: 49 | # optional, see below for details 50 | key: value 51 | other_key: other_value 52 | last_checked: [optional: date when the information was last checked: YYYY-MM] 53 | skip_auto_test: [optional: skip the provider in the automated tests. default is false] 54 | website: [optional: website of the provider] 55 | --- 56 | [Markdown-formatted content that gets displayed as provider-page on the web, linked from the apps (if status is not OK)] 57 | ``` 58 | 59 | ## Status options 60 | 61 | ### OK 62 | 63 | If the status is `OK`, a standard text is used as page content. You don't need to put in anything. 64 | 65 | `before_login_hint` as well as additional content is not available from within the apps for status `OK`. 66 | Use status `PREPARATION` to show `before_login_hint` 67 | or consider using `after_login_hint`, which is shown also for status `OK`. 68 | 69 | ### PREPARATION 70 | 71 | This status means that the user must do some preparing steps 72 | before they can use a chatmail app with their provider. 73 | For example enabling IMAP/SMTP at their provider's settings, or creating an app-specific password. 74 | 75 | The required steps must be described as page content in a friendly, helpful howto-style. 76 | 77 | Additionally a short, informative sentence must be written as `before_login_hint`, so tech-savy users already know what to do, and others get an idea what to expect from the linked provider page. 78 | 79 | ### BROKEN 80 | 81 | This status means that chatmail/core will not work with this provider. 82 | 83 | The problems blocking the usage must be summarized as page content in a friendly tone. 84 | 85 | Additionally a short, informative sentence must be written as `before_login_hint`, so tech-savy users already know what's up, and others get an idea what to expect from the linked provider page. 86 | 87 | **Note:** Bear in mind the `before_login_hint` is displayed by the UIs as normal text, **without** html, markdown, whatever. Therefore, links in the `before_login_hint` are *not allowed*, especially as they tend to be wider than some smartphone displays. 88 | 89 | 90 | ## Configuration Defaults 91 | 92 | Beside the server-configuration, chatmail/core has several other options 93 | that can typically be using chatmail apps at runtime. 94 | In most cases the global-default for these options are fine for most providers, 95 | however, if not, you have the possibility to define provider-specific-defaults 96 | with the `config_defaults` section. 97 | 98 | The api for that is a bit low-level: you have to define key-value-pairs 99 | where the keys have to match the names used in the API, the values have to be 100 | plain numeric values, see 101 | [Chatmail API](https://c.delta.chat/classdc__context__t.html#aff3b894f6cfca46cab5248fdffdf083d) 102 | for details. 103 | 104 | The provider-specific-defaults are applied _once_ 105 | after the first successful configuration, 106 | they are not applied later on re-configures or on updates - 107 | reason for that is to respect user-choice of changing these values. 108 | 109 | 110 | ## OAuth2 111 | 112 | With the top-level option `oauth2=AUTHORIZER` you can specify, 113 | that emails on the given domains support OAuth2 with the given authorizers. 114 | Supported authorizer is `yandex`. 115 | 116 | In contrast to other authorization methods, you cannot use OAuth2 117 | only because the server may support it. 118 | New OAuth2 authorizers require adaptions in chatmail/core 119 | and typically also bureaucratic effort. 120 | 121 | ### Use OAuth2 together with other options 122 | 123 | If for an entered address, OAuth2 is supported, 124 | and the used client supports OAuth2, 125 | the user will be asked if he wants to continue with that. 126 | 127 | Only if that is _cancelled_, the `before_login_hint` is shown; 128 | so it is not needed to say sth. about OAuth2 before login. 129 | 130 | All other options are applied as usual. 131 | 132 | 133 | ## Limit RCPT TO header 134 | 135 | With the `opt` option `max_smtp_rcpt_to: MAX` 136 | you can set the maximum number of recipients 137 | that should be used in an `RCPT TO:` smtp header. 138 | If a message needs to be sent to more recipients, 139 | multiple messages are sent out, 140 | each with exactly the same MIME-message 141 | (with `To:` mime headers that may contain all recipients). 142 | 143 | If this limit is not specified, the library picks an reasonable default. 144 | 145 | 146 | ## Strict TLS 147 | 148 | By default, all providers in to the provider-database 149 | are assumed to support "Strict TLS". 150 | If that is not true for a specific provider, 151 | you have to add the `opt` option `strict_tls: false`. 152 | 153 | Connections with `socket: PLAIN` are not affected by the `strict_tls` option, 154 | it's not ignored, there is just no TLS at all. 155 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # include: 2 | 3 | exclude: 4 | - TODO 5 | - README.md 6 | - Gemfile 7 | - Gemfile.lock 8 | - LICENSE 9 | - "_providers/example.com.md" 10 | - target 11 | - build.rs 12 | - Cargo.* 13 | - rust-toolchain 14 | - .travis.yml 15 | - vendor 16 | - .bundle 17 | - "_providers/old" 18 | 19 | defaults: 20 | - 21 | scope: 22 | path: "_providers" 23 | values: 24 | layout: "provider" 25 | 26 | 27 | collections: 28 | providers: 29 | output: true 30 | permalink: /:slug 31 | -------------------------------------------------------------------------------- /_data/strings.yml: -------------------------------------------------------------------------------- 1 | 2 | NoData: "We don't have this information yet - If you know it please let us know or start a pull request" -------------------------------------------------------------------------------- /_includes/authentication.html: -------------------------------------------------------------------------------- 1 | {% case include.auth %} 2 | {% when 'emailPass' %} 3 | 4 | email & password 5 | 6 | {% when 'emailAppPass' %} 7 | 8 | Token 9 | 10 | {% when 'Oauth' %} 11 | 12 | Oauth2 13 | 14 | {% else %} 15 | {{auth}} 16 | {% endcase %} -------------------------------------------------------------------------------- /_layouts/provider.html: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {{ page.name }} - Provider Info 16 | 17 | 18 | 19 |
20 | 21 | 22 |
Chatmail Provider Info
23 |

{{ page.name }}

24 | {% case page.status %} 25 | {% when 'OK' %} 26 |

27 | Just works! 28 | 29 |

30 |

Using {{ page.name }} will just work!

31 | {% when 'PREPARATION' %} 32 |

33 | Needs preparation. 34 | 35 |

36 | {{ content }} 37 | {% when 'BROKEN' %} 38 |

39 | It's broken. 40 | 41 |

42 | {{ content }} 43 | {% endcase %} 44 |

Last checked: {{ page.last_checked }}

45 | 48 |
49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /_providers/163.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 163 Mail 3 | status: PREPARATION 4 | domains: 5 | - 163.com 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.163.com 10 | port: 993 11 | - type: smtp 12 | socket: SSL 13 | hostname: smtp.163.com 14 | port: 465 15 | last_checked: 2024-11 16 | before_login_hint: Enable "POP3/SMTP/IMAP" on the website, add a third-party auth code and use that as the login password 17 | website: https://mail.163.com/ 18 | --- 19 | 20 | To enable 163.com (probably as well as 126.com), you need to enable "POP3/SMTP/IMAP" in "Settings", add a third-party auth code and use the code as the login password. Note that the provider only grants 2 such third-party auth codes at the same time for free accounts. 21 | -------------------------------------------------------------------------------- /_providers/aktivix.org.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Aktivix 3 | status: OK 4 | domains: 5 | - aktivix.org 6 | server: 7 | - type: imap 8 | socket: STARTTLS 9 | hostname: newyear.aktivix.org 10 | port: 143 11 | - type: smtp 12 | socket: STARTTLS 13 | hostname: newyear.aktivix.org 14 | port: 587 15 | last_checked: 2018-10 16 | website: https://aktivix.org/ 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/aliyun.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Alibaba Mail 3 | status: OK 4 | domains: 5 | - aliyun.com 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.aliyun.com 10 | port: 993 11 | - type: smtp 12 | socket: SSL 13 | hostname: smtp.aliyun.com 14 | port: 465 15 | last_checked: 2023-09 16 | website: https://mail.aliyun.com/ 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/aol.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Aol. (America Online) 3 | domains: 4 | - aol.com 5 | status: PREPARATION 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.aol.com 10 | port: 993 11 | - type: smtp 12 | socket: SSL 13 | hostname: smtp.aol.com 14 | port: 465 15 | before_login_hint: To log in to AOL, you need to set up an app password in the AOL web interface. 16 | last_checked: 2020-02 17 | website: https://aol.com 18 | --- 19 | 20 | To enable using AOL, you have to turn on some extra settings: 21 | 22 | 1. Log into AOL on the web and navigate to [Account Info > Account Security](https://login.aol.com/account/security) 23 | 2. If two-step verification is set to "ON:" 24 | * Temporarily turn *two-step verification* to *OFF* (you may turn this back after the account is set up in the client). 25 | * On the left navigation panel, click *Personal Info*, then click back to *Account Security* to refresh the page. 26 | 3. Select *Manage app passwords*, then from the Select your app pulldown, select "Other App." 27 | 4. In the text field labeled Enter any name, then click the *Generate* button. 28 | 5. Copy the password provided as you will need this in the app. If you write it down manually, leave out the spaces. 29 | 30 | -------------------------------------------------------------------------------- /_providers/arcor.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: arcor.de 3 | status: OK 4 | domains: 5 | - arcor.de 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.arcor.de 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: mail.arcor.de 15 | port: 465 16 | username_pattern: EMAIL 17 | last_checked: 2020-05 18 | website: https://www.arcor.de 19 | --- 20 | -------------------------------------------------------------------------------- /_providers/autistici.org.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Autistici/Inventati 3 | status: OK 4 | domains: 5 | - autistici.org 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: mail.autistici.org 10 | port: 993 11 | - type: smtp 12 | socket: SSL 13 | hostname: smtp.autistici.org 14 | port: 465 15 | last_checked: 2018-01 16 | website: https://www.autistici.org/ 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/blindzeln.org.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: blindzeln 3 | status: OK 4 | domains: 5 | - delta.blinzeln.de 6 | - delta.blindzeln.org 7 | server: 8 | - type: imap 9 | socket: SSL 10 | hostname: webbox222.server-home.org 11 | port: 993 12 | username_pattern: EMAIL 13 | - type: smtp 14 | socket: SSL 15 | hostname: webbox222.server-home.org 16 | port: 465 17 | username_pattern: EMAIL 18 | last_checked: 2021-09 19 | website: http://www.blindzeln.org 20 | --- 21 | -------------------------------------------------------------------------------- /_providers/bluewin.ch.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Swisscom / Bluewin 3 | status: OK 4 | domains: 5 | - bluewin.ch 6 | server: 7 | - hostname: imaps.bluewin.ch 8 | port: 993 9 | socket: SSL 10 | type: imap 11 | - hostname: smtpauths.bluewin.ch 12 | port: 465 13 | socket: SSL 14 | type: smtp 15 | last_checked: 2017-12 16 | website: https://www.bluewin.ch/de/email/ 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/buzon.uy.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Buzon.uy 3 | status: OK 4 | domains: 5 | - buzon.uy 6 | server: 7 | - type: imap 8 | hostname: mail.buzon.uy 9 | port: 143 10 | socket: STARTTLS 11 | - type: smtp 12 | hostname: mail.buzon.uy 13 | port: 587 14 | socket: STARTTLS 15 | last_checked: 2024-01 16 | website: https://buzon.uy 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/chello.at.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: chello.at 3 | status: OK 4 | domains: 5 | - chello.at 6 | server: 7 | - type: imap 8 | hostname: mail.mymagenta.at 9 | port: 993 10 | socket: SSL 11 | - type: smtp 12 | hostname: mail.mymagenta.at 13 | port: 465 14 | socket: SSL 15 | last_checked: 2020-05 16 | website: https://www.magenta.at/ 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/comcast.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Comcast / xfinity 3 | status: OK 4 | domains: 5 | - xfinity.com 6 | - comcast.net 7 | last_checked: 2017-12 8 | website: https://www.xfinity.com/ 9 | --- 10 | -------------------------------------------------------------------------------- /_providers/daleth.cafe.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🌈 daleth.cafe 3 | status: OK 4 | domains: 5 | - daleth.cafe 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: daleth.cafe 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: daleth.cafe 15 | port: 465 16 | username_pattern: EMAIL 17 | - type: imap 18 | socket: STARTTLS 19 | hostname: daleth.cafe 20 | port: 143 21 | username_pattern: EMAIL 22 | - type: smtp 23 | socket: STARTTLS 24 | hostname: daleth.cafe 25 | port: 587 26 | username_pattern: EMAIL 27 | last_checked: 2024-06 28 | skip_auto_test: false 29 | website: https://nein.jetzt 30 | --- 31 | This ist a chatmail-instance with docker running in parallel. 32 | 33 | If anything went wrong, please write me at or onto [ctl@dpc.re](mailto:ctl@dpc.re) via email! 34 | -------------------------------------------------------------------------------- /_providers/dismail.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: dismail.de 3 | status: OK 4 | domains: 5 | - dismail.de 6 | last_checked: 2018-09 7 | --- 8 | -------------------------------------------------------------------------------- /_providers/disroot.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Disroot 3 | status: OK 4 | domains: 5 | - disroot.org 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: disroot.org 10 | port: 993 11 | username_pattern: EMAILLOCALPART 12 | - type: smtp 13 | socket: STARTTLS 14 | hostname: disroot.org 15 | port: 587 16 | username_pattern: EMAILLOCALPART 17 | last_checked: 2017-06 18 | website: https://disroot.org 19 | --- 20 | -------------------------------------------------------------------------------- /_providers/e.email.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: e.email 3 | status: OK 4 | domains: 5 | - e.email 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: mail.ecloud.global 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: STARTTLS 14 | hostname: mail.ecloud.global 15 | port: 587 16 | username_pattern: EMAIL 17 | last_checked: 2021-01 18 | website: https://e.foundation 19 | --- 20 | 21 | -------------------------------------------------------------------------------- /_providers/espiv.net.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Espiv 3 | status: OK 4 | domains: 5 | - espiv.net 6 | last_checked: 2021-01 7 | website: https://espiv.net 8 | --- 9 | -------------------------------------------------------------------------------- /_providers/example.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: example.com 3 | status: BROKEN 4 | domains: 5 | - example.com 6 | - example.org 7 | - example.net 8 | server: 9 | - type: imap 10 | socket: SSL 11 | hostname: imap.example.com 12 | port: 1337 13 | username_pattern: EMAILLOCALPART 14 | - type: smtp 15 | socket: STARTTLS 16 | hostname: smtp.example.com 17 | port: 1337 18 | username_pattern: EMAIL 19 | before_login_hint: Hush this provider doesn't exist! 20 | after_login_hint: | 21 | This provider doesn't really exist, so you can't use it :/ 22 | If you need an email provider, take a look at providers.delta.chat! 23 | last_checked: 2020-01 24 | skip_auto_test: true 25 | website: https://example.com 26 | --- 27 | 28 | # example.com doesn't exist :/ 29 | 30 | This provider doesn't really exist, so you can't use it. But if you could, you 31 | could find steps on this page on how to configure it. 32 | 33 | If you need an email provider, maybe take a look at [this list](https://providers.delta.chat)! 34 | 35 | -------------------------------------------------------------------------------- /_providers/fastmail.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Fastmail 3 | status: PREPARATION 4 | # Domain list from https://www.fastmail.com/about/ourdomains/ 5 | domains: 6 | - 123mail.org 7 | - 150mail.com 8 | - 150ml.com 9 | - 16mail.com 10 | - 2-mail.com 11 | - 4email.net 12 | - 50mail.com 13 | - airpost.net 14 | - allmail.net 15 | - bestmail.us 16 | - cluemail.com 17 | - elitemail.org 18 | - emailcorner.net 19 | - emailengine.net 20 | - emailengine.org 21 | - emailgroups.net 22 | - emailplus.org 23 | - emailuser.net 24 | - eml.cc 25 | - f-m.fm 26 | - fast-email.com 27 | - fast-mail.org 28 | - fastem.com 29 | - fastemail.us 30 | - fastemailer.com 31 | - fastest.cc 32 | - fastimap.com 33 | - fastmail.cn 34 | - fastmail.co.uk 35 | - fastmail.com 36 | - fastmail.com.au 37 | - fastmail.de 38 | - fastmail.es 39 | - fastmail.fm 40 | - fastmail.fr 41 | - fastmail.im 42 | - fastmail.in 43 | - fastmail.jp 44 | - fastmail.mx 45 | - fastmail.net 46 | - fastmail.nl 47 | - fastmail.org 48 | - fastmail.se 49 | - fastmail.to 50 | - fastmail.tw 51 | - fastmail.uk 52 | - fastmail.us 53 | - fastmailbox.net 54 | - fastmessaging.com 55 | - fea.st 56 | - fmail.co.uk 57 | - fmailbox.com 58 | - fmgirl.com 59 | - fmguy.com 60 | - ftml.net 61 | - h-mail.us 62 | - hailmail.net 63 | - imap-mail.com 64 | - imap.cc 65 | - imapmail.org 66 | - inoutbox.com 67 | - internet-e-mail.com 68 | - internet-mail.org 69 | - internetemails.net 70 | - internetmailing.net 71 | - jetemail.net 72 | - justemail.net 73 | - letterboxes.org 74 | - mail-central.com 75 | - mail-page.com 76 | - mailandftp.com 77 | - mailas.com 78 | - mailbolt.com 79 | - mailc.net 80 | - mailcan.com 81 | - mailforce.net 82 | - mailftp.com 83 | - mailhaven.com 84 | - mailingaddress.org 85 | - mailite.com 86 | - mailmight.com 87 | - mailnew.com 88 | - mailsent.net 89 | - mailservice.ms 90 | - mailup.net 91 | - mailworks.org 92 | - ml1.net 93 | - mm.st 94 | - myfastmail.com 95 | - mymacmail.com 96 | - nospammail.net 97 | - ownmail.net 98 | - petml.com 99 | - postinbox.com 100 | - postpro.net 101 | - proinbox.com 102 | - promessage.com 103 | - realemail.net 104 | - reallyfast.biz 105 | - reallyfast.info 106 | - rushpost.com 107 | - sent.as 108 | - sent.at 109 | - sent.com 110 | - speedpost.net 111 | - speedymail.org 112 | - ssl-mail.com 113 | - swift-mail.com 114 | - the-fastest.net 115 | - the-quickest.com 116 | - theinternetemail.com 117 | - veryfast.biz 118 | - veryspeedy.net 119 | - warpmail.net 120 | - xsmail.com 121 | - yepmail.net 122 | - your-mail.com 123 | # Servers list from https://www.fastmail.help/hc/en-us/articles/1500000278342 124 | server: 125 | - type: imap 126 | socket: SSL 127 | hostname: imap.fastmail.com 128 | port: 993 129 | - type: smtp 130 | socket: SSL 131 | hostname: smtp.fastmail.com 132 | port: 465 133 | # Technically supported, but very strongly discouraged by Fastmail 134 | # - type: smtp 135 | # socket: STARTTLS 136 | # hostname: smtp.fastmail.com 137 | # port: 587 138 | before_login_hint: "You must create an app-specific password before you can log in." 139 | last_checked: 2022-01 140 | website: https://fastmail.com 141 | --- 142 | 143 | To use your Fastmail email address you have to generate a specific password for it. 144 | 145 | You can do that in the Fastmail web interface at "Settings / Account: Password & Security / Third-Party-Apps: Add": 146 | 147 | 1. Enter your Password to be able to make changes. Then click "New App Password". 148 | 2. Choose a new name for the password. 149 | 3. At access, choose "Mail (IMAP/POP/SMTP)". 150 | 4. Click "Generate password". 151 | 5. Enter the 16-digit password shown there into the app's password field. 152 | **Careful** - leave out the spaces, it's just 16 digits. Better to copy-paste it, which will always paste without the spaces. 153 | 154 | Fastmail supports [any of its domains](https://www.fastmail.com/about/ourdomains/) being used as an alias regardless of which you registered with, however the email and domain you picked during registration is the one they use for your "username". If you are setting up an alias other than the email you originally registered at Fastmail with, you willl need to use "Advanced" during setup. 155 | 156 | # Aliases and Custom Domains 157 | 158 | The email address you're using with the app should be entered as the "email" address, while your Fastmail webmail login email address (the one you registered with originally) should be used as the "IMAP Login Name" and "SMTP Login Name". Your "password" and "SMTP Password" should be the 16-digit password generated for you by Fastmail. 159 | 160 | For security, the SSL/TLS settings should be explicitly selected and used for both IMAP and SMTP, and "Strict" for the Certificate Checks. Allowing to use "Automatic" for any of these risks an automatic security downgrade in the unlikely event an error is encountered. 161 | -------------------------------------------------------------------------------- /_providers/firemail.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Firemail 3 | status: PREPARATION 4 | domains: 5 | - firemail.at 6 | - firemail.de 7 | before_login_hint: Firemail erlaubt nur bei bezahlten Accounts den vollen Zugriff auf das E-Mail-Protokoll. Wenn Sie nicht für Firemail bezahlen, verwenden Sie bitte einen anderen E-Mail-Anbieter. 8 | after_login_hint: Leider schränkt Firemail die maximale Gruppengröße ein. Je nach Bezahlmodell sind nur 5 bis 30 Gruppenmitglieder erlaubt. 9 | last_checked: 2020-08 10 | website: https://firemail.de 11 | --- 12 | 13 | Firemail erlaubt nur bei bezahlten Accounts den vollen Zugriff auf das E-Mail-Protokoll 14 | (IMAP _und_ SMTP). 15 | 16 | Weiterhin schränkt Firemail leider die maximale Größe von Gruppen ein, 17 | selbst wenn Sie einen bezahlten Account verwenden. 18 | Je nach Bezahlmodell sind nur 5 bis 30 Gruppenmitglieder erlaubt. 19 | 20 | Wenn Sie nicht für Firemail bezahlen und auch nicht bezahlen möchten, 21 | verwenden Sie bitte einen anderen E-Mail-Anbieter. 22 | -------------------------------------------------------------------------------- /_providers/five.chat.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: five.chat 3 | status: OK 4 | domains: 5 | - five.chat 6 | config_defaults: 7 | bcc_self: 1 8 | sentbox_watch: 0 9 | mvbox_move: 0 10 | website: https://five.chat 11 | last_checked: 2020-06 12 | --- 13 | -------------------------------------------------------------------------------- /_providers/freenet.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: freenet.de 3 | status: PREPARATION 4 | domains: 5 | - freenet.de 6 | server: 7 | - hostname: mx.freenet.de 8 | port: 993 9 | socket: SSL 10 | type: imap 11 | - hostname: mx.freenet.de 12 | port: 143 13 | socket: STARTTLS 14 | type: imap 15 | - hostname: mx.freenet.de 16 | port: 465 17 | socket: SSL 18 | type: smtp 19 | - hostname: mx.freenet.de 20 | port: 587 21 | socket: STARTTLS 22 | type: smtp 23 | last_checked: 2024-08 24 | website: https://www.freenet.de/index.html 25 | before_login_hint: Um deine freenet.de E-Mail-Adresse zu benutzen, musst du erst auf der freenet.de-Webseite "POP3/IMAP/SMTP" aktivieren. 26 | --- 27 | 28 | Um deine freenet.de E-Mail-Adresse zu benutzen, musst du erst 29 | auf der freenet.de-Webseite "POP3/IMAP/SMTP" aktivieren. 30 | 31 | Das findest du in den "Postfach-Einstellungen", in der Kategorie 32 | "POP3/IMAP/SMTP" bei "Einrichtung POP3/IMAP". Hier musst du die Checkbox "Jetzt 33 | POP3, IMAP und SMTP aktivieren" anschalten und auf "Speichern" klicken. 34 | -------------------------------------------------------------------------------- /_providers/gmail.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Gmail 3 | status: PREPARATION 4 | domains: 5 | - gmail.com 6 | - googlemail.com 7 | - google.com 8 | server: 9 | - type: imap 10 | socket: SSL 11 | hostname: imap.gmail.com 12 | port: 993 13 | - type: smtp 14 | socket: SSL 15 | hostname: smtp.gmail.com 16 | port: 465 17 | opt: 18 | delete_to_trash: true 19 | before_login_hint: | 20 | For Gmail accounts, you need to have "2-Step Verification" enabled and create an app-password. 21 | last_checked: 2024-08 22 | website: https://gmail.com 23 | --- 24 | 25 | To use your Gmail email address, 26 | you need to enable **2-Step Verification** in your Google Account 27 | and then **Create an app-specific password**. 28 | 29 | This means to create an additional password which you use only for one device or app. 30 | Please [follow Google's instructions](https://support.google.com/accounts/answer/185833), 31 | create an app-password at 32 | and then use the newly generated password to log in. 33 | 34 | If you still have login problems, 35 | make sure IMAP is enabled in the Gmail web interface 36 | at **Settings / See all settings / Forwarding and POP/IMAP / IMAP access / Enable IMAP**. 37 | 38 | ## Further information 39 | 40 | Gmail places some limits on the [amount of emails you may send and receive per day](https://support.google.com/mail/answer/22839). 41 | 42 | In the past, we supported Google's Oauth as well. 43 | Due Google adding more and more bureaucracy in that area, 44 | we dropped support for that. 45 | This allows our small open source project 46 | using our limited resources 47 | in areas with larger impact. 48 | -------------------------------------------------------------------------------- /_providers/gmx.net.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: GMX.net 3 | status: PREPARATION 4 | domains: 5 | - gmx.net 6 | - gmx.de 7 | - gmx.at 8 | - gmx.ch 9 | - gmx.org 10 | - gmx.eu 11 | - gmx.info 12 | - gmx.biz 13 | - gmx.com 14 | server: 15 | - type: imap 16 | socket: SSL 17 | hostname: imap.gmx.net 18 | port: 993 19 | - type: smtp 20 | socket: SSL 21 | hostname: mail.gmx.net 22 | port: 465 23 | - type: smtp 24 | socket: STARTTLS 25 | hostname: mail.gmx.net 26 | port: 587 27 | before_login_hint: | 28 | You must allow IMAP access to your account before you can login. 29 | last_checked: 2017-06 30 | website: https://www.gmx.net/ 31 | --- 32 | 33 | To use your GMX email address you have to enable access for 3rd party applications through IMAP. Please see [GMX's own article on how to do that](https://support.gmx.com/pop-imap/toggle.html). 34 | (Note: in the GMX settings, if the checkbox isn't visible in your mobile browser, try "Show website as desktop version".) 35 | 36 | Afterwards you can use your GMX email address and the newly created password. 37 | 38 | One more tip: In case you find that messages are not moved into the designated "DeltaChat"-folder of your email account, please make sure that you have less than 20 folders altogether. Apparently GMX Freemail allows only for 20 folders. Note that also folders in the trash do count. 39 | 40 | -------------------------------------------------------------------------------- /_providers/hermes.radio.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: hermes.radio 3 | status: OK 4 | domains: 5 | - '*.hermes.radio' 6 | - '*.aco-connexion.org' 7 | opt: 8 | strict_tls: false 9 | config_defaults: 10 | mdns_enabled: 0 11 | e2ee_enabled: 0 12 | show_emails: 2 13 | last_checked: 2022-06 14 | website: http://hermes.radio 15 | --- 16 | -------------------------------------------------------------------------------- /_providers/hey.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: hey.com 3 | status: BROKEN 4 | domains: 5 | - hey.com 6 | before_login_hint: | 7 | hey.com does not offer the standard IMAP e-mail protocol, so you cannot log in to hey.com. 8 | last_checked: 2020-06 9 | website: https://hey.com 10 | --- 11 | 12 | Unfortunately, hey.com does not offer the standard IMAP e-mail protocol, 13 | so you cannot log in to hey.com. 14 | 15 | Please choose another provider 16 | or ask hey.com to support standard e-mail protocols. -------------------------------------------------------------------------------- /_providers/i.ua.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: I.ua 3 | status: BROKEN 4 | domains: 5 | - i.ua 6 | last_checked: 2021-08 7 | before_login_hint: Протокол IMAP не предоставляется и не планируется. 8 | website: https://www.i.ua/ 9 | --- 10 | 11 | Unfortunately, i.ua doesn't support IMAP, so it doesn't work with chatmail. 12 | For more information, see the first topic on [http://help.i.ua/section/11](http://help.i.ua/section/11). 13 | -------------------------------------------------------------------------------- /_providers/i3.net.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: i3.net 3 | status: OK 4 | domains: 5 | - i3.net 6 | last_checked: 2021-02 7 | website: https://i3.net 8 | --- 9 | -------------------------------------------------------------------------------- /_providers/icloud.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: iCloud Mail 3 | status: PREPARATION 4 | domains: 5 | - icloud.com 6 | - me.com 7 | - mac.com 8 | server: 9 | - type: imap 10 | socket: SSL 11 | hostname: imap.mail.me.com 12 | port: 993 13 | username_pattern: emaillocalpart 14 | - type: smtp 15 | socket: STARTTLS 16 | hostname: smtp.mail.me.com 17 | port: 587 18 | before_login_hint: "You must create an app-specific password before login." 19 | last_checked: 2024-10 20 | website: https://www.icloud.com/mail 21 | --- 22 | 23 | To use your iCloud email address [it is required to generate a specific password for it](https://support.apple.com/en-us/HT202304). Afterwards you can use your iCloud email address and the newly created password. 24 | 25 | When using a Custom Email Domain hosted on iCloud+ you need to: 26 | - fill in the address you want to use in the "E-Mail Adress" field, 27 | - fill in your iCloud login email in "Advanced > IMAP Login Name" and "Advanced > SMTP Login Name", and 28 | - fill "Advanced > IMAP Server" with "imap.mail.me.com" and "Advanced > SMTP Server" with "smtp.mail.me.com". 29 | -------------------------------------------------------------------------------- /_providers/infomaniak.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: infomaniak.com 3 | status: OK 4 | domains: 5 | - ik.me 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: mail.infomaniak.com 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: mail.infomaniak.com 15 | port: 465 16 | username_pattern: EMAIL 17 | last_checked: 2021-10 18 | opt: 19 | max_smtp_rcpt_to: 10 20 | website: https://infomaniak.com 21 | --- 22 | -------------------------------------------------------------------------------- /_providers/kolst.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Kolst 3 | status: OK 4 | domains: 5 | - kolst.com 6 | last_checked: 2019-09 7 | --- 8 | -------------------------------------------------------------------------------- /_providers/kontent.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Kontent 3 | status: OK 4 | domains: 5 | - kontent.com 6 | last_checked: 2018-06 7 | website: https://www.kontent.com/products/email/ 8 | --- 9 | -------------------------------------------------------------------------------- /_providers/mail.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: mail.com 3 | status: PREPARATION 4 | domains: 5 | # Source: https://www.mail.com/mail/domains/ (duplicates cleaned up) 6 | - email.com 7 | - groupmail.com 8 | - post.com 9 | - homemail.com 10 | - housemail.com 11 | - writeme.com 12 | - mail.com 13 | - mail-me.com 14 | - workmail.com 15 | - accountant.com 16 | - activist.com 17 | - adexec.com 18 | - allergist.com 19 | - alumni.com 20 | - alumnidirector.com 21 | - archaeologist.com 22 | - auctioneer.net 23 | - bartender.net 24 | - brew-master.com 25 | - chef.net 26 | - chemist.com 27 | - collector.org 28 | - columnist.com 29 | - comic.com 30 | - consultant.com 31 | - contractor.net 32 | - counsellor.com 33 | - deliveryman.com 34 | - diplomats.com 35 | - dr.com 36 | - engineer.com 37 | - financier.com 38 | - fireman.net 39 | - gardener.com 40 | - geologist.com 41 | - graphic-designer.com 42 | - graduate.org 43 | - hairdresser.net 44 | - instructor.net 45 | - insurer.com 46 | - journalist.com 47 | - legislator.com 48 | - lobbyist.com 49 | - minister.com 50 | - musician.org 51 | - optician.com 52 | - orthodontist.net 53 | - pediatrician.com 54 | - photographer.net 55 | - physicist.net 56 | - politician.com 57 | - presidency.com 58 | - priest.com 59 | - programmer.net 60 | - publicist.com 61 | - radiologist.net 62 | - realtyagent.com 63 | - registerednurses.com 64 | - repairman.com 65 | - representative.com 66 | - salesperson.net 67 | - secretary.net 68 | - socialworker.net 69 | - sociologist.com 70 | - songwriter.net 71 | - teachers.org 72 | - techie.com 73 | - technologist.com 74 | - therapist.net 75 | - umpire.com 76 | - worker.com 77 | - artlover.com 78 | - bikerider.com 79 | - birdlover.com 80 | - blader.com 81 | - kittymail.com 82 | - lovecat.com 83 | - marchmail.com 84 | - boardermail.com 85 | - catlover.com 86 | - clubmember.org 87 | - nonpartisan.com 88 | - petlover.com 89 | - doglover.com 90 | - greenmail.net 91 | - hackermail.com 92 | - theplate.com 93 | - bsdmail.com 94 | - computer4u.com 95 | - coolsite.net 96 | - cyberdude.com 97 | - cybergal.com 98 | - cyberservices.com 99 | - cyber-wizard.com 100 | - linuxmail.org 101 | - null.net 102 | - solution4u.com 103 | - tech-center.com 104 | - webname.com 105 | - acdcfan.com 106 | - angelic.com 107 | - discofan.com 108 | - elvisfan.com 109 | - hiphopfan.com 110 | - kissfans.com 111 | - madonnafan.com 112 | - metalfan.com 113 | - ninfan.com 114 | - ravemail.com 115 | - reggaefan.com 116 | - snakebite.com 117 | - bellair.net 118 | - californiamail.com 119 | - dallasmail.com 120 | - nycmail.com 121 | - pacific-ocean.com 122 | - pacificwest.com 123 | - sanfranmail.com 124 | - usa.com 125 | - africamail.com 126 | - asia-mail.com 127 | - australiamail.com 128 | - berlin.com 129 | - brazilmail.com 130 | - chinamail.com 131 | - dublin.com 132 | - dutchmail.com 133 | - englandmail.com 134 | - europe.com 135 | - arcticmail.com 136 | - europemail.com 137 | - germanymail.com 138 | - irelandmail.com 139 | - israelmail.com 140 | - italymail.com 141 | - koreamail.com 142 | - mexicomail.com 143 | - moscowmail.com 144 | - munich.com 145 | - asia.com 146 | - polandmail.com 147 | - safrica.com 148 | - samerica.com 149 | - scotlandmail.com 150 | - spainmail.com 151 | - swedenmail.com 152 | - swissmail.com 153 | - torontomail.com 154 | - aircraftmail.com 155 | - cash4u.com 156 | - disposable.com 157 | - execs.com 158 | - fastservice.com 159 | - instruction.com 160 | - job4u.com 161 | - net-shopping.com 162 | - planetmail.com 163 | - planetmail.net 164 | - qualityservice.com 165 | - rescueteam.com 166 | - surgical.net 167 | - atheist.com 168 | - disciples.com 169 | - muslim.com 170 | - protestant.com 171 | - reborn.com 172 | - reincarnate.com 173 | - religious.com 174 | - saintly.com 175 | - brew-meister.com 176 | - cutey.com 177 | - dbzmail.com 178 | - doramail.com 179 | - galaxyhit.com 180 | - hilarious.com 181 | - humanoid.net 182 | - hot-shot.com 183 | - inorbit.com 184 | - iname.com 185 | - innocent.com 186 | - keromail.com 187 | - myself.com 188 | - rocketship.com 189 | - toothfairy.com 190 | - toke.com 191 | - tvstar.com 192 | - uymail.com 193 | - 2trom.com 194 | before_login_hint: | 195 | To log in, you first need to activate POP3/IMAP in your mail.com settings. Note that this is a mail.com Premium feature only. 196 | last_checked: 2024-03 197 | website: https://mail.com/ 198 | --- 199 | 200 | To log in, 201 | you first need to 202 | [activate POP3/IMAP in your mail.com settings](https://support.mail.com/pop-imap/toggle.html). 203 | Note that this is a __[mail.com Premium](https://www.mail.com/mail/premium/)__ 204 | feature __only__. 205 | 206 | For older free accounts IMAP access was not deactivated to this date, 207 | so if you have already a client set up with IMAP, 208 | it should work here too. 209 | -------------------------------------------------------------------------------- /_providers/mail.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: mail.de 3 | status: OK 4 | domains: 5 | - mail.de 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.mail.de 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: smtp.mail.de 15 | port: 465 16 | username_pattern: EMAIL 17 | last_checked: 2021-09 18 | website: https://mail.de 19 | --- 20 | -------------------------------------------------------------------------------- /_providers/mail.ru.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Mail.ru 3 | status: PREPARATION 4 | domains: 5 | - mail.ru 6 | - inbox.ru 7 | - internet.ru 8 | - bk.ru 9 | - list.ru 10 | # For vk.com see designated file, ./vk.com.md 11 | server: 12 | - type: imap 13 | socket: SSL 14 | hostname: imap.mail.ru 15 | port: 993 16 | - type: smtp 17 | socket: SSL 18 | hostname: smtp.mail.ru 19 | port: 465 20 | before_login_hint: Вам необходимо сгенерировать "пароль для внешнего приложения" в веб-интерфейсе mail.ru, чтобы mail.ru работал с chatmail. 21 | last_checked: 2021-07 22 | website: https://mail.ru/ 23 | --- 24 | 25 | См. для получения 26 | дополнительной информации о том, как сгенерировать такой внешний пароль для 27 | chatmail. 28 | 29 | -------------------------------------------------------------------------------- /_providers/mail2tor.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: mail2tor 3 | status: PREPARATION 4 | domains: 5 | - mail2tor.com 6 | server: 7 | - type: imap 8 | hostname: g77kjrad6bafzzyldqvffq6kxlsgphcygptxhnn4xlnktfgaqshilmyd.onion 9 | port: 143 10 | socket: PLAIN 11 | - type: smtp 12 | hostname: xc7tgk2c5onxni2wsy76jslfsitxjbbptejnqhw6gy2ft7khpevhc7ad.onion 13 | port: 25 14 | socket: PLAIN 15 | before_login_hint: | 16 | Tor is needed to connect to the email servers. 17 | website: http://mail2torjgmxgexntbrmhvgluavhj7ouul5yar6ylbvjkxwqf6ixkwyd.onion/ 18 | # website: http://mail2tor.com/ 19 | last_checked: 2021-08-15 20 | --- 21 | 22 | Email servers are only reachable over [Tor](https://www.torproject.org/). 23 | -------------------------------------------------------------------------------- /_providers/mailbox.org.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Mailbox.org 3 | status: OK 4 | domains: 5 | - mailbox.org 6 | - secure.mailbox.org 7 | server: 8 | - type: imap 9 | socket: SSL 10 | hostname: imap.mailbox.org 11 | port: 993 12 | username_pattern: EMAIL 13 | - type: smtp 14 | socket: SSL 15 | hostname: smtp.mailbox.org 16 | port: 465 17 | username_pattern: EMAIL 18 | last_checked: 2019-03 19 | website: https://mailbox.org 20 | --- 21 | -------------------------------------------------------------------------------- /_providers/mailo.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: mailo.com 3 | status: OK 4 | domains: 5 | - mailo.com 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.mailo.com 10 | port: 993 11 | - type: smtp 12 | socket: SSL 13 | hostname: smtp.mailo.com 14 | port: 465 15 | last_checked: 2020-02 16 | website: mailo.com 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/mehl.cloud.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: 🇩🇪 mehl.cloud 3 | status: OK 4 | domains: 5 | - mehl.cloud 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: mehl.cloud 10 | port: 443 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: mehl.cloud 15 | port: 443 16 | username_pattern: EMAIL 17 | - type: imap 18 | socket: SSL 19 | hostname: mehl.cloud 20 | port: 993 21 | username_pattern: EMAIL 22 | - type: smtp 23 | socket: SSL 24 | hostname: mehl.cloud 25 | port: 465 26 | username_pattern: EMAIL 27 | - type: imap 28 | socket: STARTTLS 29 | hostname: mehl.cloud 30 | port: 143 31 | username_pattern: EMAIL 32 | - type: smtp 33 | socket: STARTTLS 34 | hostname: mehl.cloud 35 | port: 587 36 | username_pattern: EMAIL 37 | last_checked: 2024-06 38 | skip_auto_test: false 39 | website: https://nein.jetzt 40 | --- 41 | __chatmail instance__ 42 | If anything went wrong, please write me at https://form.ctldpc.de or onto ctl@dpc.re via email! 43 | -------------------------------------------------------------------------------- /_providers/mehl.store.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: mehl.store 3 | status: OK 4 | domains: 5 | - mehl.store 6 | - ende.in.net 7 | - l2i.top 8 | - szh.homes 9 | - sls.post.in 10 | - ente.quest 11 | - ente.cfd 12 | - nein.jetzt 13 | server: 14 | - type: imap 15 | socket: SSL 16 | hostname: mail.ende.in.net 17 | port: 993 18 | username_pattern: EMAIL 19 | - type: smtp 20 | socket: STARTTLS 21 | hostname: mail.ende.in.net 22 | port: 587 23 | username_pattern: EMAIL 24 | before_login_hint: 25 | after_login_hint: | 26 | This account provides 3GB storage for eMails and the possibility to access a NEXTCLOUD-instance by using the email-credits! 27 | last_checked: 2024-02 28 | skip_auto_test: true 29 | website: https://mehl.store 30 | --- 31 | 32 | # If yout want some more... 33 | 34 | This account provides 3GB storage for eMails and the possibility to access 35 | a NEXTCLOUD-instance by using the email-credits! You can't register yourself yet! 36 | 37 | For special cases, the domain `mehl.store`offers invite-qr-codes for Delta.Chat 38 | [Please see here for details](https://mailadm.readthedocs.io/en/latest/#)! 39 | -------------------------------------------------------------------------------- /_providers/migadu.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Migadu 3 | status: OK 4 | domains: 5 | - migadu.com 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.migadu.com 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: smtp.migadu.com 15 | port: 465 16 | username_pattern: EMAIL 17 | - type: smtp 18 | socket: STARTTLS 19 | hostname: smtp.migadu.com 20 | port: 587 21 | username_pattern: EMAIL 22 | last_checked: 2024-09 23 | website: https://www.migadu.com/ 24 | --- 25 | -------------------------------------------------------------------------------- /_providers/nauta.cu.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: nauta.cu 3 | domains: 4 | - nauta.cu 5 | status: OK 6 | opt: 7 | max_smtp_rcpt_to: 20 8 | strict_tls: false 9 | server: 10 | - type: imap 11 | socket: STARTTLS 12 | hostname: imap.nauta.cu 13 | port: 143 14 | - type: smtp 15 | socket: STARTTLS 16 | hostname: smtp.nauta.cu 17 | port: 25 18 | config_defaults: 19 | delete_server_after: 1 20 | sentbox_watch: 0 21 | mvbox_move: 0 22 | media_quality: 1 23 | last_checked: 2024-01 24 | skip_auto_test: true 25 | website: https://webmail.nauta.cu 26 | --- 27 | 28 | -------------------------------------------------------------------------------- /_providers/naver.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Naver Mail 3 | status: PREPARATION 4 | domains: 5 | - naver.com 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.naver.com 10 | port: 993 11 | username_pattern: emaillocalpart 12 | - type: smtp 13 | socket: STARTTLS 14 | hostname: smtp.naver.com 15 | port: 587 16 | before_login_hint: "Manually enabling IMAP/SMTP is required." 17 | last_checked: 2021-06 18 | website: https://mail.naver.com/ 19 | --- 20 | 21 | [Manually enabling IMAP/SMTP](https://help.naver.com/support/contents/contents.help?serviceNo=2342&categoryNo=2288) is required. 22 | -------------------------------------------------------------------------------- /_providers/nine.testrun.org.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: nine.testrun.org 3 | status: OK 4 | domains: 5 | - nine.testrun.org 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: nine.testrun.org 10 | port: 443 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: nine.testrun.org 15 | port: 443 16 | username_pattern: EMAIL 17 | - type: imap 18 | socket: SSL 19 | hostname: nine.testrun.org 20 | port: 993 21 | username_pattern: EMAIL 22 | - type: smtp 23 | socket: SSL 24 | hostname: nine.testrun.org 25 | port: 465 26 | username_pattern: EMAIL 27 | - type: imap 28 | socket: STARTTLS 29 | hostname: nine.testrun.org 30 | port: 143 31 | username_pattern: EMAIL 32 | - type: smtp 33 | socket: STARTTLS 34 | hostname: nine.testrun.org 35 | port: 587 36 | username_pattern: EMAIL 37 | last_checked: 2024-06 38 | config_defaults: 39 | mvbox_move: 0 40 | website: https://nine.testrun.org/ 41 | --- 42 | -------------------------------------------------------------------------------- /_providers/nubo.coop.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: nubo 3 | status: OK 4 | domains: 5 | - nubo.coop 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: mail.nubo.coop 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: mail.nubo.coop 15 | port: 465 16 | username_pattern: EMAIL 17 | last_checked: 2022-12 18 | website: https://nubo.coop 19 | --- 20 | -------------------------------------------------------------------------------- /_providers/outlook.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Outlook.com 3 | status: BROKEN 4 | before_login_hint: | 5 | Unfortunately, Outlook does not allow using passwords anymore, 6 | per-app-passwords are currently not working. 7 | domains: 8 | - hotmail.com 9 | - outlook.com 10 | - office365.com 11 | - outlook.com.tr 12 | - live.com 13 | - outlook.de 14 | server: 15 | - type: imap 16 | socket: SSL 17 | hostname: outlook.office365.com 18 | port: 993 19 | - type: smtp 20 | socket: STARTTLS 21 | hostname: smtp.office365.com 22 | port: 587 23 | last_checked: 2024-11 24 | website: https://outlook.live.com/mail 25 | --- 26 | 27 | Unfortunately, Outlook does not allow using passwords anymore, 28 | per-app-passwords are reported to not being working in November 2024. 29 | Please let us know if you succeed using Outlook, so we can adapt these hints. 30 | -------------------------------------------------------------------------------- /_providers/ouvaton.coop.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Ouvaton 3 | status: OK 4 | domains: 5 | - ouvaton.org 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.ouvaton.coop 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: smtp.ouvaton.coop 15 | port: 465 16 | username_pattern: EMAIL 17 | last_checked: 2022-12 18 | website: https://ouvaton.coop 19 | --- 20 | -------------------------------------------------------------------------------- /_providers/posteo.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Posteo 3 | status: OK 4 | domains: 5 | - posteo.de 6 | - posteo.af 7 | - posteo.at 8 | - posteo.be 9 | - posteo.ca 10 | - posteo.ch 11 | - posteo.cl 12 | - posteo.co 13 | - posteo.co.uk 14 | - posteo.com 15 | - posteo.com.br 16 | - posteo.cr 17 | - posteo.cz 18 | - posteo.dk 19 | - posteo.ee 20 | - posteo.es 21 | - posteo.eu 22 | - posteo.fi 23 | - posteo.gl 24 | - posteo.gr 25 | - posteo.hn 26 | - posteo.hr 27 | - posteo.hu 28 | - posteo.ie 29 | - posteo.in 30 | - posteo.is 31 | - posteo.it 32 | - posteo.jp 33 | - posteo.la 34 | - posteo.li 35 | - posteo.lt 36 | - posteo.lu 37 | - posteo.me 38 | - posteo.mx 39 | - posteo.my 40 | - posteo.net 41 | - posteo.nl 42 | - posteo.no 43 | - posteo.nz 44 | - posteo.org 45 | - posteo.pe 46 | - posteo.pl 47 | - posteo.pm 48 | - posteo.pt 49 | - posteo.ro 50 | - posteo.ru 51 | - posteo.se 52 | - posteo.sg 53 | - posteo.si 54 | - posteo.tn 55 | - posteo.uk 56 | - posteo.us 57 | server: 58 | - hostname: posteo.de 59 | port: 993 60 | socket: SSL 61 | type: imap 62 | - hostname: posteo.de 63 | port: 143 64 | socket: STARTTLS 65 | type: imap 66 | - hostname: posteo.de 67 | port: 465 68 | socket: SSL 69 | type: smtp 70 | - hostname: posteo.de 71 | port: 587 72 | socket: STARTTLS 73 | type: smtp 74 | last_checked: 2024-08 75 | website: https://posteo.de/ 76 | --- 77 | -------------------------------------------------------------------------------- /_providers/protonmail.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: ProtonMail 3 | status: BROKEN 4 | domains: 5 | - protonmail.com 6 | - protonmail.ch 7 | - pm.me 8 | before_login_hint: | 9 | Protonmail does not offer the standard IMAP e-mail protocol, so you cannot log in with to Protonmail. 10 | after_login_hint: | 11 | To use Protonmail, the IMAP bridge must be running in the background. 12 | If you have connectivity issues, double check whether it works as expected. 13 | last_checked: 2019-02 14 | website: https://protonmail.com/ 15 | --- 16 | 17 | Unfortunately, Protonmail doesn't offer IMAP, so you cannot log in with chatmail to Protonmail. 18 | 19 | If you really want to use Protonmail, you can check out their IMAP bridge at , however, note that the bridge does not work on all operating system and not on all Protonmail accounts. 20 | -------------------------------------------------------------------------------- /_providers/purelymail.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: purelymail.com 3 | status: OK 4 | domains: 5 | - purelymail.com 6 | - cheapermail.com 7 | - placeq.com 8 | - rethinkmail.com 9 | - worldofmail.com 10 | server: 11 | - type: imap 12 | socket: SSL 13 | hostname: imap.purelymail.com 14 | port: 993 15 | username_pattern: EMAIL 16 | - type: smtp 17 | socket: SSL 18 | hostname: smtp.purelymail.com 19 | port: 465 20 | username_pattern: EMAIL 21 | last_checked: 2023-12 22 | website: https://purelymail.com 23 | --- 24 | -------------------------------------------------------------------------------- /_providers/qq.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: QQ Mail 3 | status: PREPARATION 4 | domains: 5 | - qq.com 6 | - foxmail.com 7 | server: 8 | - type: imap 9 | socket: SSL 10 | hostname: imap.qq.com 11 | port: 993 12 | username_pattern: emaillocalpart 13 | - type: smtp 14 | socket: SSL 15 | hostname: smtp.qq.com 16 | port: 465 17 | before_login_hint: "Manually enabling IMAP/SMTP and creating an app-specific password are required." 18 | last_checked: 2021-06 19 | website: https://mail.qq.com/ 20 | --- 21 | 22 | To use your QQ Mail address, [manually enabling IMAP/SMTP and creating an app-specific password](https://service.mail.qq.com/cgi-bin/help?subtype=1&id=28&no=331) are required. 23 | 24 | -------------------------------------------------------------------------------- /_providers/rambler.ru.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: rambler.ru 3 | status: PREPARATION 4 | domains: 5 | # From the registration page 6 | - rambler.ru 7 | - autorambler.ru 8 | - myrambler.ru 9 | - rambler.ua 10 | # From https://help.rambler.ru/mail/mail-pochtovye-klienty/1275 11 | - lenta.ru 12 | # https://help.rambler.ru/mail/mail-legal/1329 13 | - ro.ru 14 | - r0.ru 15 | server: 16 | # Source: https://help.rambler.ru/mail/mail-nastrojki-pochtovogo-yashika/2129/ 17 | - type: imap 18 | socket: SSL 19 | hostname: imap.rambler.ru 20 | port: 993 21 | - type: smtp 22 | socket: SSL 23 | hostname: smtp.rambler.ru 24 | port: 465 25 | # Let's put `STARTTLS` below all the `SSL` ones. 26 | - type: imap 27 | socket: STARTTLS 28 | hostname: imap.rambler.ru 29 | port: 143 30 | # They also say "if the above ones don't work, try these": 31 | # https://help.rambler.ru/mail/mail-pochtovye-klienty/1275 32 | # But many of those don't appear to actually work right now, 33 | # our CI fails. 34 | before_login_hint: | 35 | Чтобы войти в Рамблер/почта через chatmail, необходимо предварительно включить доступ с помощью почтовых клиентов на сайте mail.rambler.ru 36 | last_checked: 2024-03 37 | website: https://mail.rambler.ru/ 38 | --- 39 | 40 | Чтобы войти в Рамблер/почта через chatmail, необходимо [включить доступ с помощью почтовых клиентов на сайте mail.rambler.ru](https://help.rambler.ru/mail/mail-nastrojki-pochtovogo-yashika/2129/) 41 | -------------------------------------------------------------------------------- /_providers/riseup.net.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: riseup.net 3 | status: OK 4 | domains: 5 | - riseup.net 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: mail.riseup.net 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: mail.riseup.net 15 | port: 465 16 | username_pattern: EMAIL 17 | last_checked: 2024-08 18 | website: https://riseup.net/ 19 | --- 20 | -------------------------------------------------------------------------------- /_providers/rogers.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: rogers.com 3 | status: OK 4 | domains: 5 | - rogers.com 6 | last_checked: 2017-12 7 | website: https://www.rogers.com/consumer/home 8 | --- 9 | -------------------------------------------------------------------------------- /_providers/sonic.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Sonic 3 | status: OK 4 | domains: 5 | - sonic.net 6 | last_checked: 2023-01 7 | website: https://www.sonic.com/ 8 | --- 9 | Sonic email accounts (sonic.net domain) work out of the box. 10 | 11 | -------------------------------------------------------------------------------- /_providers/stinpriza.net.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Stin Priza coop 3 | status: OK 4 | domains: 5 | - stinpriza.net 6 | - stinpriza.eu 7 | - el-hoyo.net 8 | opt: 9 | strict_tls: true 10 | server: 11 | - type: imap 12 | socket: STARTTLS 13 | hostname: stinpriza.net 14 | port: 143 15 | username_pattern: EMAIL 16 | - type: smtp 17 | socket: STARTTLS 18 | hostname: stinpriza.net 19 | port: 587 20 | username_pattern: EMAIL 21 | last_checked: 2024-07 22 | website: https://stinpriza.org 23 | --- 24 | This is a classic (EU based) email service. 25 | Domains declared here are the ones owned by StinPriza coop. People/Organizations/Companies can also use their own custom domain(s) with our service. 26 | Contact through website for issues/information/registration/pricing. 27 | -------------------------------------------------------------------------------- /_providers/systemausfall.org.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: systemausfall.org 3 | status: OK 4 | domains: 5 | - systemausfall.org 6 | - solidaris.me 7 | server: 8 | - type: imap 9 | socket: SSL 10 | hostname: mail.systemausfall.org 11 | port: 993 12 | username_pattern: EMAIL 13 | - type: smtp 14 | socket: SSL 15 | hostname: mail.systemausfall.org 16 | port: 465 17 | username_pattern: EMAIL 18 | last_checked: 2021-05 19 | website: https://systemausfall.org 20 | --- 21 | -------------------------------------------------------------------------------- /_providers/systemli.org.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: systemli.org 3 | status: OK 4 | domains: 5 | - systemli.org 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: mail.systemli.org 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: mail.systemli.org 15 | port: 465 16 | username_pattern: EMAIL 17 | last_checked: 2020-05 18 | website: https://www.systemli.org/ 19 | --- 20 | -------------------------------------------------------------------------------- /_providers/t-online.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: T-Online 3 | status: PREPARATION 4 | domains: 5 | - t-online.de 6 | - magenta.de 7 | server: 8 | - type: imap 9 | socket: SSL 10 | hostname: secureimap.t-online.de 11 | port: 993 12 | - type: smtp 13 | socket: SSL 14 | hostname: securesmtp.t-online.de 15 | port: 465 16 | before_login_hint: To use a T-Online email address, you need to create an app password in the web interface. 17 | last_checked: 2020-02 18 | website: https://www.t-online.de/ 19 | --- 20 | 21 | To use a T-Online email address, you need an app password. A 22 | (german) guide how to set this up is here: 23 | [https://www.telekom.de/hilfe/festnetz-internet-tv/e-mail/e-mail-adresse-passwoerter-und-sicherheit/passwort-fuer-e-mail-programme-einrichten](https://www.telekom.de/hilfe/festnetz-internet-tv/e-mail/e-mail-adresse-passwoerter-und-sicherheit/passwort-fuer-e-mail-programme-einrichten) 24 | 25 | You need to enter an additional password for external access in the [web 26 | interface settings](https://email.t-online.de/pr?a=globalsettings.passwords). 27 | To get to the settings, go to the T-Online webmail interface, click on the 28 | wheel in the top right, and then click "Passwörter" on the left. You can now 29 | set a password at "Passwort für E-Mail-Programme ändern". 30 | 31 | Enter your password twice to set it, and confirm it. Now you can login with 32 | this password. 33 | 34 | -------------------------------------------------------------------------------- /_providers/testrun.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: testrun.org 3 | status: OK 4 | domains: 5 | - testrun.org 6 | server: 7 | - type: imap 8 | hostname: testrun.org 9 | port: 993 10 | socket: SSL 11 | - type: smtp 12 | hostname: testrun.org 13 | port: 465 14 | socket: SSL 15 | - type: imap 16 | hostname: testrun.org 17 | port: 143 18 | socket: STARTTLS 19 | - type: smtp 20 | hostname: testrun.org 21 | port: 587 22 | socket: STARTTLS 23 | config_defaults: 24 | bcc_self: 1 25 | sentbox_watch: 0 26 | mvbox_move: 0 27 | website: https://testrun.org 28 | last_checked: 2020-06 29 | --- 30 | -------------------------------------------------------------------------------- /_providers/tiscali.it.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tiscali 3 | status: OK 4 | domains: 5 | - tiscali.it 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: imap.tiscali.it 10 | port: 993 11 | - type: smtp 12 | socket: SSL 13 | hostname: smtp.tiscali.it 14 | port: 465 15 | last_checked: 2019-12 16 | skip_auto_test: true 17 | website: https://tiscali.it 18 | --- 19 | -------------------------------------------------------------------------------- /_providers/tutanota.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Tutanota 3 | status: BROKEN 4 | domains: 5 | - tutanota.com 6 | - tutanota.de 7 | - tutamail.com 8 | - tuta.io 9 | - keemail.me 10 | before_login_hint: | 11 | Tutanota does not offer the standard IMAP e-mail protocol, so you cannot log in to Tutanota. 12 | last_checked: 2021-06 13 | website: https://tutanota.com 14 | --- 15 | 16 | Unfortunately, Tutanota does not offer the standard IMAP e-mail protocol, 17 | so you cannot log in with chatmail to Tutanota. 18 | 19 | Please choose another provider 20 | or ask Tutanota to support standard e-mail protocols. 21 | -------------------------------------------------------------------------------- /_providers/ukr.net.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: ukr.net 3 | status: PREPARATION 4 | domains: 5 | - ukr.net 6 | server: 7 | - hostname: imap.ukr.net 8 | port: 993 9 | socket: SSL 10 | type: imap 11 | - hostname: smtp.ukr.net 12 | port: 465 13 | socket: SSL 14 | type: smtp 15 | before_login_hint: | 16 | You must allow IMAP access to your account before you can login. 17 | last_checked: 2024-08 18 | website: https://www.ukr.net/ 19 | --- 20 | 21 | To use your ukr.net email address you have to enable access for 3rd party applications through IMAP. Please see [ukr.net's own article on how to do that](https://wiki.ukr.net/ManageIMAPAccess). 22 | -------------------------------------------------------------------------------- /_providers/undernet.uy.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Undernet.uy 3 | status: OK 4 | domains: 5 | - undernet.uy 6 | server: 7 | - type: imap 8 | hostname: undernet.uy 9 | port: 143 10 | socket: STARTTLS 11 | - type: smtp 12 | hostname: undernet.uy 13 | port: 587 14 | socket: STARTTLS 15 | last_checked: 2020-08 16 | website: https://undernet.uy 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/vfemail.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: VFEmail 3 | status: OK 4 | domains: 5 | - vfemail.net 6 | last_checked: 2017-10 7 | website: https://vfemail.net/ 8 | --- 9 | -------------------------------------------------------------------------------- /_providers/vivaldi.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Vivaldi Webmail 3 | status: OK 4 | domains: 5 | - vivaldi.net 6 | server: 7 | - hostname: imap.vivaldi.net 8 | port: 143 9 | socket: STARTTLS 10 | type: imap 11 | - hostname: smtp.vivaldi.net 12 | port: 587 13 | socket: STARTTLS 14 | type: smtp 15 | last_checked: 2021-06 16 | --- 17 | -------------------------------------------------------------------------------- /_providers/vk.com.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: VK Mail 3 | status: PREPARATION 4 | domains: 5 | - vk.com 6 | # Source: https://vk.com/wall-104054395_14970?w=wall-104054395_14970_r26667 7 | # But their FAQ still states that vk.com can't work with other email clients: 8 | # https://help.vk.mail.ru/vkmail/questions/client 9 | # Maybe they just haven't updated it yet? 10 | # Or maybe they're just testing and might disable it again, as it once happened: 11 | # https://vk.com/wall-104054395_14970?w=wall-104054395_14970_r15160 12 | # 13 | server: 14 | - type: imap 15 | socket: SSL 16 | # The vk.com service is ruled by the same company as mail.ru. 17 | # For mail.ru see ./mail.ru.md 18 | hostname: imap.mail.ru 19 | port: 993 20 | - type: smtp 21 | socket: SSL 22 | hostname: smtp.mail.ru 23 | port: 465 24 | # I have tried to find a way to get to this link through the UI, but couldn't. 25 | before_login_hint: | 26 | Вам необходимо сгенерировать "пароль для внешнего приложения" в веб-интерфейсе mail.ru 27 | https://account.mail.ru/user/2-step-auth/passwords/ 28 | чтобы vk.com работал с chatmail. 29 | last_checked: 2024-07 30 | website: https://vk.mail.ru/ 31 | # Also apparently OAuth is supported as well: 32 | # https://support.delta.chat/t/oauth2-vk-com/1854?u=wofwca 33 | --- 34 | 35 | Вам необходимо сгенерировать "пароль для внешнего приложения" в веб-интерфейсе mail.ru 36 | 37 | чтобы vk.com работал с chatmail. 38 | -------------------------------------------------------------------------------- /_providers/vodafone.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Vodafone.de 3 | status: OK 4 | domains: 5 | - vodafone.de 6 | - vodafonemail.de 7 | server: 8 | - hostname: imap.vodafonemail.de 9 | port: 993 10 | socket: SSL 11 | type: imap 12 | - hostname: smtp.vodafonemail.de 13 | port: 587 14 | socket: STARTTLS 15 | type: smtp 16 | last_checked: 2020-08 17 | website: https://www.vodafone.de/ 18 | --- 19 | -------------------------------------------------------------------------------- /_providers/web.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: WEB.DE 3 | status: PREPARATION 4 | domains: 5 | - web.de 6 | - email.de 7 | - flirt.ms 8 | - hallo.ms 9 | - kuss.ms 10 | - love.ms 11 | - magic.ms 12 | - singles.ms 13 | - cool.ms 14 | - kanzler.ms 15 | - okay.ms 16 | - party.ms 17 | - pop.ms 18 | - stars.ms 19 | - techno.ms 20 | - clever.ms 21 | - deutschland.ms 22 | - genial.ms 23 | - ich.ms 24 | - online.ms 25 | - smart.ms 26 | - wichtig.ms 27 | - action.ms 28 | - fussball.ms 29 | - joker.ms 30 | - planet.ms 31 | - power.ms 32 | server: 33 | - type: imap 34 | socket: SSL 35 | hostname: imap.web.de 36 | port: 993 37 | username_pattern: emaillocalpart 38 | - type: imap 39 | socket: STARTTLS 40 | hostname: imap.web.de 41 | port: 143 42 | username_pattern: emaillocalpart 43 | - type: smtp 44 | socket: STARTTLS 45 | hostname: smtp.web.de 46 | port: 587 47 | username_pattern: emaillocalpart 48 | before_login_hint: | 49 | You must allow IMAP access to your account before you can login. 50 | after_login_hint: | 51 | Note: if you have your web.de spam settings too strict, you won't receive contact requests from new people. 52 | If you want to receive contact requests, you should disable the "3-Wege-Spamschutz" in the web.de settings. 53 | Read how: https://hilfe.web.de/email/spam-und-viren/spamschutz-einstellungen.html 54 | last_checked: 2020-01 55 | website: https://web.de 56 | --- 57 | 58 | To use your web.de email address you have to enable IMAP access. Please see [web.de's own article on how to do that](https://hilfe.web.de/pop-imap/einschalten.html). 59 | 60 | Afterwards you can use your web.de email address and the newly created password. 61 | 62 | ## Disable 3-Way Spam Protection 63 | 64 | If the 3-Way Spam Protection is enabled in the web.de settings, things 65 | won't work as expected, as all emails by unknown contacts will be moved to the 66 | "Unbekannt" folder instead of the Inbox. 67 | 68 | If you want to receive contact requests, you should downgrade it to 2-Way Spam 69 | Protection, as described here: 70 | [https://hilfe.web.de/email/spam-und-viren/spamschutz-einstellungen.html](https://hilfe.web.de/email/spam-und-viren/spamschutz-einstellungen.html) 71 | 72 | ![3-Wege-Spamschutz in den web.de-Einstellungen](../assets/img/web.de-spam-protection.png) 73 | 74 | One more tip: In case you find that messages are not moved into the designated "DeltaChat"-folder of your email account, please make sure that you have less than 40 folders altogether. Apparently web.de allows only for 40 folders. Note that also folders in the trash do count. 75 | -------------------------------------------------------------------------------- /_providers/wkpb.de.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Westfalen-Kolleg Paderborn 3 | status: PREPARATION 4 | domains: 5 | - wkpb.de 6 | server: 7 | - type: imap 8 | socket: SSL 9 | hostname: pimap.schulon.org 10 | port: 993 11 | username_pattern: EMAIL 12 | - type: smtp 13 | socket: SSL 14 | hostname: psmtp.schulon.org 15 | port: 465 16 | username_pattern: EMAIL 17 | before_login_hint: "Dies sind die gleichen Anmeldedaten wie bei Moodle und Abitur-Online." 18 | skip_auto_test: true 19 | last_checked: 2023-12 20 | website: https://wkpb.de/ 21 | --- 22 | 23 | Student and teacher email of the Westfalen-Kolleg in Paderborn. 24 | -------------------------------------------------------------------------------- /_providers/yahoo.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Yahoo 3 | status: PREPARATION 4 | domains: 5 | - yahoo.com 6 | - yahoo.de 7 | - yahoo.it 8 | - yahoo.fr 9 | - yahoo.es 10 | - yahoo.se 11 | - yahoo.co.uk 12 | - yahoo.co.nz 13 | - yahoo.com.au 14 | - yahoo.com.ar 15 | - yahoo.com.br 16 | - yahoo.com.mx 17 | - ymail.com 18 | - rocketmail.com 19 | - yahoodns.net 20 | server: 21 | - type: imap 22 | socket: SSL 23 | hostname: imap.mail.yahoo.com 24 | port: 993 25 | - type: smtp 26 | socket: SSL 27 | hostname: smtp.mail.yahoo.com 28 | port: 465 29 | before_login_hint: To use your Yahoo email address you have to create an "App-Password" in the account security screen. 30 | last_checked: 2020-06 31 | website: https://yahoo.com 32 | --- 33 | 34 | To use your Yahoo email address you have to create an "App-Password" in the account security screen: 35 | 36 | In your [account security screen](https://login.yahoo.com/account/security) you will find a setting titled "Generate app password". Please use it to generate an app password. Then enter the generated password in the app. 37 | -------------------------------------------------------------------------------- /_providers/yandex.ru.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: yandex.ru 3 | status: PREPARATION 4 | domains: 5 | - yandex.com 6 | - yandex.by 7 | - yandex.kz 8 | - yandex.ru 9 | - yandex.ua 10 | - ya.ru 11 | - narod.ru 12 | oauth2: yandex 13 | server: 14 | - type: imap 15 | socket: SSL 16 | hostname: imap.yandex.com 17 | port: 993 18 | - type: smtp 19 | socket: SSL 20 | hostname: smtp.yandex.com 21 | port: 465 22 | before_login_hint: | 23 | For Yandex accounts, you have to set IMAP protocol option turned on. 24 | last_checked: 2020-03 25 | website: https://yandex.ru/ 26 | --- 27 | 28 | To use your Yandex account you have to set IMAP protocol option *turned on* in the Yandex web interface. Please visit for more details. 29 | 30 | Russian help: 31 | -------------------------------------------------------------------------------- /_providers/yggmail.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Yggmail 3 | domains: 4 | - yggmail 5 | status: PREPARATION 6 | server: 7 | - type: imap 8 | socket: PLAIN 9 | hostname: localhost 10 | port: 1143 11 | - type: smtp 12 | socket: PLAIN 13 | hostname: localhost 14 | port: 1025 15 | config_defaults: 16 | mvbox_move: 0 17 | before_login_hint: An Yggmail companion app needs to be installed on your device to access the Yggmail network. 18 | after_login_hint: | 19 | Make sure, the Yggmail companion app runs whenever you want to use this account. 20 | Note, that you usually cannot write from @yggmail addresses to normal e-mail-addresses (as @gmx.net). However, you can create another account in the normal e-mail-network for this purpose. 21 | last_checked: 2021-08 22 | skip_auto_test: true 23 | website: https://github.com/neilalexander/yggmail 24 | --- 25 | 26 | Yggmail servers usually exist only on your local device 27 | and you need to install a companion app to make them work. 28 | 29 | [Yggmail Project Homepage](https://github.com/neilalexander/yggmail) 30 | -------------------------------------------------------------------------------- /_providers/ziggo.nl.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: ziggo 3 | status: OK 4 | domains: 5 | - ziggo.nl 6 | server: 7 | - hostname: imap.ziggo.nl 8 | port: 993 9 | socket: SSL 10 | type: imap 11 | - hostname: smtp.ziggo.nl 12 | port: 587 13 | socket: STARTTLS 14 | type: smtp 15 | last_checked: 2017-06 16 | website: https://www.ziggo.nl/ 17 | --- 18 | -------------------------------------------------------------------------------- /_providers/zoho.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Zoho Mail 3 | domains: 4 | - zohomail.eu 5 | - zohomail.com 6 | - zoho.com 7 | status: PREPARATION 8 | server: 9 | - type: imap 10 | socket: SSL 11 | hostname: imap.zoho.eu 12 | port: 993 13 | - type: smtp 14 | socket: SSL 15 | hostname: smtp.zoho.eu 16 | port: 465 17 | before_login_hint: To use Zoho Mail, you have to turn on IMAP in the Zoho Mail backend. 18 | last_checked: 2021-06 19 | website: https://www.zoho.com/ 20 | --- 21 | 22 | To enable using Zoho Mail, you have to turn on IMAP Access: 23 | 24 | 1. Log into Zoho Mail on the web and navigate to [Settings > Mail Accounts](https://mail.zoho.eu/zm/#settings/all/mailaccounts) 25 | 2. There should be check box for imap access so tick that 26 | 27 | These instructions are also on [this Zoho Mail help page](https://www.zoho.com/mail/help/imap-access.html#EnableIMAPAccess) 28 | 29 | You should also make sure that you specify the mail server manually since going with the defaults may result in errors. 30 | -------------------------------------------------------------------------------- /assets/img/web.de-spam-protection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chatmail/provider-db/a56fc126ccd298a343ca15b5b745804043ee4a69/assets/img/web.de-spam-protection.png -------------------------------------------------------------------------------- /assets/provider-db-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 22 | 24 | 27 | 31 | 35 | 36 | 45 | 46 | 68 | 70 | Created by potrace 1.15, written by Peter Selinger 2001-2017 71 | 72 | 74 | image/svg+xml 75 | 77 | 78 | 79 | 80 | 81 | 87 | 93 | 97 | p 109 | 110 | 111 | -------------------------------------------------------------------------------- /assets/search.js: -------------------------------------------------------------------------------- 1 | const searchbar = document.getElementById("search") 2 | const noPreperation = document.getElementById("noPreperation") 3 | 4 | function enableInputs() { 5 | searchbar.disabled = false 6 | noPreperation.disabled = false 7 | 8 | searchbar.onkeyup = () => { run() } 9 | noPreperation.onchange = () => { run() } 10 | } 11 | 12 | let index = [] 13 | 14 | function populateIndex() { 15 | let newIndex = [] 16 | const list = document.getElementById("provider_list") 17 | 18 | const items = list.childNodes; 19 | for (let i = items.length; i--;) { 20 | const elem = items[i]; 21 | if (!elem.dataset) continue; 22 | newIndex.push({ 23 | elem: elem, 24 | searchkey: elem.dataset.searchkey.toLowerCase(), 25 | no_preparation: elem.dataset.status === "OK", 26 | }) 27 | } 28 | 29 | index = newIndex 30 | 31 | } 32 | 33 | function update(mask) { 34 | for (let i = 0; i < index.length; i++) { 35 | if(index[i].elem.hidden === !mask[i]) continue; 36 | index[i].elem.hidden = !mask[i] 37 | } 38 | updateStripes() 39 | } 40 | 41 | function updateStripes(){ 42 | let j = 0 43 | for (let i = 0; i < index.length; i++) { 44 | if(index[i].elem.hidden)continue; 45 | j++; 46 | if(j % 2){ 47 | index[i].elem.classList.add("strip") 48 | } else { 49 | index[i].elem.classList.remove("strip") 50 | } 51 | } 52 | } 53 | 54 | function search(searchword) { 55 | return index.map(({ searchkey }) => searchkey.indexOf(searchword.toLowerCase()) !== -1) 56 | } 57 | 58 | function filter(property, value) { 59 | return index.map(({ [property]:p }) => p === value) 60 | } 61 | 62 | async function runSearch() { 63 | if (index.length === 0) return 64 | let masks = [] 65 | 66 | if (searchbar.value !== "") 67 | masks.push(search(searchbar.value)) 68 | if (noPreperation.checked) 69 | masks.push(filter('no_preparation', true)) 70 | 71 | let search_result = [] 72 | 73 | // apply all masks on top of eachother ( if one false - all false) 74 | for (let i = 0; i < index.length; i++) { 75 | let res = true; 76 | for (let j = 0; j < masks.length; j++) { 77 | const thing = masks[j][i]; 78 | if (masks[j][i]) { 79 | continue 80 | } else { 81 | res = false 82 | } 83 | } 84 | search_result.push(res) 85 | } 86 | 87 | update(search_result) 88 | } 89 | 90 | let is_running = false 91 | let scheduled = false 92 | const run = async () => { // this debounce is probably not nessesary 93 | if (!is_running) { 94 | is_running = true 95 | await runSearch(searchbar.value) 96 | is_running = false 97 | if (scheduled) { 98 | scheduled = false 99 | await run() 100 | } 101 | } else { 102 | scheduled = true 103 | } 104 | } 105 | 106 | (function () { 107 | console.time('init') 108 | populateIndex() 109 | 110 | enableInputs() 111 | updateStripes() 112 | console.timeEnd('init') 113 | })() 114 | -------------------------------------------------------------------------------- /assets/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --color-works: #008000; 3 | --color-prep: blue; 4 | --color-broken: rgb(160, 55, 55); 5 | } 6 | .table { 7 | width: calc(100%-50pt); 8 | margin-bottom: 75px; 9 | } 10 | .provider_list .status-ok { 11 | color: white; 12 | background: var(--color-works); 13 | padding-left: 5pt; 14 | } 15 | 16 | .provider_list .status-prep { 17 | color: yellow; 18 | background: var(--color-prep); 19 | padding-left: 5pt; 20 | text-decoration: none; 21 | } 22 | .provider_list a.status-prep { 23 | padding-left: 0; 24 | } 25 | .provider_list a.status-prep :hover, a.title:link, a.title:visited, a.title:active{ 26 | color: yellow; 27 | } 28 | 29 | .provider_list .status-broken { 30 | color: white; 31 | background: var(--color-broken); 32 | padding-left: 5pt; 33 | } 34 | 35 | .provider_list .status-minimal { 36 | box-shadow: none; 37 | padding-left: 0; 38 | } 39 | 40 | blockquote > p { 41 | border-left: 10px solid #ccc; 42 | background-color: beige 43 | } 44 | 45 | td { 46 | padding-left: 5pt; 47 | padding-right: 5pt; 48 | } 49 | 50 | td:last-child { 51 | width: 99%; 52 | } 53 | 54 | #search { 55 | margin: 8pt 56 | } 57 | 58 | table{ 59 | border-collapse: collapse; 60 | min-width: calc(100% - 50pt); 61 | margin: 10px; 62 | overflow-x: scroll; 63 | 64 | } 65 | 66 | th, td { 67 | border-right: 1pt solid darkgray; 68 | } 69 | 70 | thead { 71 | border-bottom: 2pt solid darkgray; 72 | } 73 | 74 | 75 | thead > tr:last-child { 76 | background-color: #f8f8f8 77 | } 78 | 79 | th { 80 | padding: 1pt 5px; 81 | } 82 | 83 | tbody > .strip { 84 | background-color: #f2f2f2; 85 | } 86 | 87 | td:last-child, th:last-child { 88 | border-right: none; 89 | } 90 | 91 | .search-box-container { 92 | margin: auto; 93 | width: 250pt; 94 | } 95 | 96 | #search { 97 | width: 100%; 98 | } 99 | 100 | .center { 101 | text-align: center; 102 | } 103 | 104 | .status { 105 | font-size:12pt; 106 | font-weight: bold; 107 | } 108 | 109 | .content{ 110 | max-width: 600pt; 111 | margin: 5em auto 0em; 112 | padding: 0 4pt; 113 | } 114 | 115 | .section { 116 | padding: 0 8pt; 117 | } 118 | 119 | .section > ul { 120 | padding-left: 18pt; 121 | } 122 | 123 | .highlight { 124 | display: inline-block; 125 | padding: 1pt; 126 | } 127 | 128 | .footer-text { 129 | padding: 1em; 130 | } 131 | 132 | body>div, body>p, body>h2 { margin: 1em; } 133 | 134 | .filter { 135 | margin-left: 30px; 136 | } 137 | main { 138 | margin: 20px; 139 | } 140 | 141 | 142 | @media only screen and (min-width: 600px) { 143 | footer { 144 | position: fixed; 145 | left: 0; 146 | bottom: 0; 147 | width: 100%; 148 | background-color: #eee; 149 | color: white; 150 | text-align: center; 151 | } 152 | .footer-text { 153 | margin-bottom: 0px; 154 | color: black; 155 | } 156 | main { 157 | width: 45%; 158 | float: left; 159 | margin-left: 20px; 160 | margin-right: 20px; 161 | margin-top: 15px; 162 | } 163 | .table { 164 | width: 55%; 165 | margin-left: 45%; 166 | } 167 | .provider_list .status-ok { 168 | color: white; 169 | background: var(--color-works); 170 | padding-left: 5pt; 171 | } 172 | 173 | .provider_list .status-prep { 174 | background: var(--color-prep); 175 | padding-left: 5pt; 176 | text-decoration: none; 177 | } 178 | .provider_list a.status-prep :hover, a.title:link, a.title:visited, a.title:active{ 179 | text-decoration: none; 180 | color: yellow; 181 | } 182 | 183 | .provider_list .status-broken { 184 | color: white; 185 | background: var(--color-broken); 186 | padding-left: 5pt; 187 | } 188 | 189 | .provider_list .status-minimal { 190 | box-shadow: none; 191 | padding-left: 0; 192 | } 193 | 194 | blockquote > p { 195 | border-left: 10px solid #ccc; 196 | background-color: beige 197 | } 198 | 199 | td { 200 | padding-left: 6pt; 201 | padding-right: 5pt; 202 | white-space: nowrap; 203 | } 204 | 205 | #search { 206 | margin: 8pt 207 | } 208 | 209 | table{ 210 | border-collapse: collapse; 211 | min-width: calc(100% - 40pt); 212 | margin: 20pt 213 | 214 | } 215 | 216 | th, td { 217 | border-right: 1pt solid darkgray; 218 | } 219 | 220 | thead { 221 | border-bottom: 2pt solid darkgray; 222 | } 223 | 224 | 225 | thead > tr:last-child { 226 | background-color: #f8f8f8 227 | } 228 | 229 | th { 230 | padding: 1pt 5px; 231 | } 232 | 233 | tbody > .strip { 234 | background-color: #f2f2f2; 235 | } 236 | 237 | td:last-child, th:last-child { 238 | border-right: none; 239 | } 240 | 241 | .search-box-container { 242 | margin: auto; 243 | width: 250pt; 244 | float: initial; 245 | } 246 | 247 | #search { 248 | width: 80%; 249 | } 250 | 251 | .center { 252 | text-align: center; 253 | } 254 | 255 | .status { 256 | font-size:12pt; 257 | font-weight: bold; 258 | } 259 | 260 | .content{ 261 | max-width: 600pt; 262 | margin: 5em auto 0em; 263 | padding: 0 4pt; 264 | } 265 | 266 | .section { 267 | padding: 0 8pt; 268 | } 269 | 270 | .section > ul { 271 | padding-left: 18pt; 272 | } 273 | 274 | .highlight { 275 | display: inline-block; 276 | padding: 1pt; 277 | } 278 | .filter { 279 | text-align: right; 280 | float: right; 281 | margin-top: -35px; 282 | margin-right: 2.5%; 283 | } 284 | 285 | } 286 | @media only screen and (max-width: 1300px) { 287 | .filter { 288 | margin-top: 0px; 289 | } 290 | } 291 | @media only screen and (max-width: 860px) { 292 | main { 293 | width: 90%; 294 | } 295 | .table { 296 | width: 100%; 297 | margin-left: 0px; 298 | } 299 | } 300 | 301 | .explanation-text { 302 | width: 75%; 303 | margin-right: 5em; 304 | margin-left: auto; 305 | } 306 | 307 | .github-link { 308 | margin-top: 10em; 309 | font-size: 0.7em; 310 | } 311 | 312 | .github-link a { 313 | color: #aaa; 314 | text-decoration: none; 315 | } 316 | 317 | .project-title { 318 | color: gray; 319 | font-size: small; 320 | margin: 0 0 2rem 0; 321 | } 322 | 323 | .status-subheading { 324 | font-weight: bold; 325 | font-size: large; 326 | } 327 | 328 | .status-subheading svg { 329 | width: 1.5rem; 330 | vertical-align: middle; 331 | margin-left: 0.5em; 332 | } 333 | 334 | .status-ok { 335 | color: green; 336 | } 337 | 338 | .status-preparation { 339 | color: orange; 340 | } 341 | 342 | .status-broken { 343 | color: red; 344 | } 345 | 346 | h1 { 347 | font-size: 2rem; 348 | margin: 0 0 1rem 0; 349 | clear: both; 350 | } 351 | 352 | p, div { 353 | font-size: 1.2rem; 354 | } 355 | 356 | img.provider-db-logo { 357 | float: right; 358 | margin: -4rem 4rem 0rem 0rem; 359 | width: 5rem; 360 | } 361 | 362 | h3, h2 { 363 | margin-top: 2rem; 364 | } 365 | 366 | li { 367 | margin: 0.2rem 0 0 1.2rem 368 | } 369 | -------------------------------------------------------------------------------- /fallback.html: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Fallback - Provider Overview 12 | 13 | 14 | go back to the normal Overview
15 |
    16 | {% for provider in site.providers %} 17 |
  • 18 | 19 | {{ provider.title }} [ {{ provider.domains | join: "; " }} ]
    20 |
    21 | [ {{ provider.status }} on {{ provider.last_checked }} ]
    22 | [ {{ provider.credentials | join: " or " }} ] 23 |
  • 24 | {% endfor %} 25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | permalink: / 3 | --- 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Email Provider Overview 16 | 17 | 18 | 19 |
20 |

Email Provider Database

21 | 22 |

Does my email provider work with Chatmail?

23 | 24 |
25 |

26 | Beside the recommended usage of chatmail relays, 27 | you can use many classic email account in chatmail apps. 28 |

29 |

30 | Usually, it just works, but for some providers, you need to adjust the settings. 31 | In this case, click on “prepare” for details. 32 |

33 |

34 | Look in the table if your email provider is already tested — it’s the part after the @ in your email address. 35 | E.g. if your email address is jj.doe@gmail.com, then gmail.com is your email provider. 36 |

37 |

38 | If the information here is out of date, please report it on the GitHub issue page. 39 | We appreciate pull requests as well :) 40 |

41 |
42 |
43 |
44 | 45 |
46 | 47 | 48 |
49 |
50 | 51 | 52 |
53 | 54 | 55 | 56 | 59 | 62 | 65 | 66 | 67 | 68 | {% for provider in site.providers %} 69 | 70 | 74 | 86 | 87 | 105 | 106 | {% endfor %} 107 | 108 |
57 | Status 58 | 60 | Name 61 | 63 | Domain/s 64 |
75 | 76 | {% case provider.status %} 77 | {% when 'OK' %} 78 | OK 79 | {% when 'PREPARATION' %} 80 | PREPARE 81 | {% when 'BROKEN' %} 82 | NOT WORKING 83 | {% endcase %} 84 | 85 | {{provider.name}} 88 | {% unless provider.domains.first %} 89 | {{provider.domains}} 90 | {% else %} 91 | {% if provider.domains.size > 3 %} 92 |
93 | show all ({{ provider.domains.size }}) 94 | {% for domain in provider.domains%} 95 | - {{domain}}
96 | {% endfor %} 97 |
98 | {% else %} 99 | {% for domain in provider.domains%} 100 | - {{domain}}
101 | {% endfor %} 102 | {% endif %} 103 | {% endunless %} 104 |
109 |
110 |
111 | 112 |
113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | -------------------------------------------------------------------------------- /rust-toolchain: -------------------------------------------------------------------------------- 1 | stable -------------------------------------------------------------------------------- /validation/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /validation/autotest.py: -------------------------------------------------------------------------------- 1 | import argparse 2 | import smtplib 3 | import os 4 | try: 5 | import yaml # pip install pyyaml 6 | except ModuleNotFoundError: 7 | print("Please install pyyaml, e.g. with: pip install pyyaml") 8 | exit(1) 9 | import ssl 10 | import imaplib 11 | import sys 12 | 13 | 14 | def test_smtp(server: dict): 15 | """Test if connecting to an SMTP server works. 16 | 17 | :param server: the server dict, part of the provider dict 18 | """ 19 | host = server["hostname"] 20 | port = server["port"] 21 | if server["socket"] == "SSL": 22 | context = ssl.create_default_context() 23 | context.set_alpn_protocols(["smtp"]) 24 | smtplib.SMTP_SSL(host, port, context=context) 25 | elif server["socket"] == "STARTTLS": 26 | context = ssl.create_default_context() 27 | context.set_alpn_protocols(["smtp"]) 28 | smtpconn = smtplib.SMTP(host, port) 29 | smtpconn.starttls(context=context) 30 | smtpconn.ehlo() 31 | elif server["socket"] == "PLAIN": 32 | smtplib.SMTP(host, port) 33 | 34 | 35 | def test_imap(server: dict): 36 | """Test if connecting to an IMAP server works. 37 | 38 | :param server: the server dict, part of the provider dict 39 | :param server: the server dict, part of the provider dict 40 | """ 41 | host = server["hostname"] 42 | port = server["port"] 43 | if server["socket"] == "SSL": 44 | context = ssl.create_default_context() 45 | context.set_alpn_protocols(["imap"]) 46 | imaplib.IMAP4_SSL(host, port=port, ssl_context=context) 47 | elif server["socket"] == "STARTTLS": 48 | imapconn = imaplib.IMAP4(host, port=port) 49 | context = ssl.create_default_context() 50 | context.set_alpn_protocols(["imap"]) 51 | imapconn.starttls(ssl_context=context) 52 | elif server["socket"] == "PLAIN": 53 | imaplib.IMAP4(host, port) 54 | 55 | 56 | def get_filenames(providerspath: str) -> list: 57 | """Get a list of filenames with provider data 58 | 59 | :param providerspath: the path to the _providers folder 60 | :return the list of filenames of providers 61 | """ 62 | path = os.path.join(os.environ["PWD"], providerspath) 63 | filenames = list() 64 | for root, dir, files in os.walk(path): 65 | for filename in files: 66 | filenames.append(os.path.join(path, filename)) 67 | return filenames 68 | 69 | 70 | def parse_provider(filename: str) -> dict: 71 | """Parse a provider file 72 | 73 | :param filename of the provider 74 | :return the dictionary with values of the provider 75 | """ 76 | with open(filename) as f: 77 | raw = f.read() 78 | providerdata = raw.split("---")[1] 79 | yml = yaml.load(providerdata, Loader=yaml.SafeLoader) 80 | yml["freetext"] = raw.split("---")[2] 81 | return yml 82 | 83 | 84 | def main(): 85 | parser = argparse.ArgumentParser() 86 | parser.add_argument("--path", type=str, default="_providers", help="Path to provider-db/_providers") 87 | parser.add_argument("--name", type=str, default="", help="Test only a specific provider") 88 | parser.add_argument("-q", "--quiet", action="store_true", help="Only print errors") 89 | args = parser.parse_args() 90 | 91 | filenames = get_filenames(args.path) 92 | providers = [parse_provider(filename) for filename in filenames] 93 | 94 | exitcode = 0 95 | for provider in providers: 96 | if provider.get("server") is None: 97 | continue 98 | if provider.get("skip_auto_test"): 99 | continue 100 | if args.name.lower() not in provider.get("name").lower(): 101 | continue 102 | for server in provider["server"]: 103 | if server["hostname"].endswith(".onion"): 104 | continue # :todo SOCKS5 support https://gist.github.com/sstevan/efccf3d5d3e73039c21aa848353ff52f 105 | try: 106 | if not args.quiet: 107 | print("testing %s:%s" % (server["hostname"], server["port"]), end="... ") 108 | sys.stdout.flush() 109 | if server["type"] == "smtp": 110 | test_smtp(server) 111 | if server["type"] == "imap": 112 | test_imap(server) 113 | if not args.quiet: 114 | print("done") 115 | except Exception: 116 | if args.quiet: 117 | print("testing %s:%s" % (server["hostname"], server["port"]), end="... ") 118 | print("[error] %s: %s" % 119 | (sys.exc_info()[0].__name__, sys.exc_info()[1])) 120 | if "[SSL: DH_KEY_TOO_SMALL]" in str(sys.exc_info()[1]) and provider["name"] == "Naver Mail": 121 | continue # exception: as of 2021-06 naver.com worked; the misconfiguration doesn't seem to be fatal 122 | if args.name.lower() in provider.get("name").lower() and args.name != "": 123 | raise 124 | exitcode += 1 125 | return exitcode 126 | 127 | 128 | if __name__ == "__main__": 129 | exitcode = main() 130 | exit(exitcode) 131 | -------------------------------------------------------------------------------- /validation/index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs-extra') 2 | const yaml = require('js-yaml') 3 | const { join } = require('path'); 4 | 5 | const fontmatterRegex = /---\n([^]*\n)---([^]*)/m; 6 | 7 | function testServer(server){ 8 | if(!server) throw new Error("Empty servers are not allowed") 9 | 10 | if(!server.hostname || server.hostname.trim() == "") throw new Error("Hostname missing") 11 | if(!server.port) throw new Error("Port missing") 12 | if( 13 | !server.socket || 14 | server.socket.trim() == "" || 15 | !["SSL", "STARTTLS", "PLAIN"].includes(server.socket.trim()) 16 | ) throw new Error(`Invalid Socket "${server.socket}"`) 17 | if( 18 | !server.type || 19 | server.type.trim() == "" || 20 | !["IMAP", "SMTP"].includes(server.type.trim().toUpperCase()) 21 | ) throw new Error(`Invalid type "${server.type}"`) 22 | if( 23 | server.username_pattern && 24 | !["EMAIL", "EMAILLOCALPART"].includes( 25 | server.username_pattern.trim().toUpperCase() 26 | ) 27 | ) throw new Error(`Invalid username_pattern "${server.username_pattern}"`) 28 | 29 | for (const key of Object.keys(server)) { 30 | if (![ 31 | "type", 32 | "socket", 33 | "hostname", 34 | "port", 35 | "username_pattern", 36 | ].includes(key)) { 37 | throw new Error(`Unexpected key "${key}"`) 38 | } 39 | } 40 | } 41 | 42 | function test(fileContent) { 43 | if (!fontmatterRegex.test(fileContent)) { 44 | console.log(fileContent); 45 | throw new Error("Fontmatter not found / bad formatted / not ended (make sure the EOL is set to LF not to CRLF)") 46 | } 47 | 48 | const parseResult = fileContent.match(fontmatterRegex) 49 | const yamlString = parseResult[1] 50 | const markdown = parseResult[2] 51 | 52 | const json = yaml.load(yamlString); 53 | 54 | if (json.status == "PREPARATION") { 55 | // If status == PREPARATION, does before_login_hint exist? 56 | if (!json.before_login_hint || json.before_login_hint.trim() === "") { 57 | throw new Error("Status is PREPARATION, but 'before_login_hint' is missing") 58 | } 59 | // If status == PREPARATION, does markdown exist? (maybe even require screenshots?) 60 | if (markdown.trim() === "") { 61 | throw new Error("Status is PREPARATION, but website content is missing") 62 | } 63 | } else if (json.status == "BROKEN") { 64 | // If status == BROKEN, does before_login_hint & after_login_hint exist? 65 | if (!json.before_login_hint || json.before_login_hint.trim() === "") { 66 | throw new Error("Status is BROKEN, but 'before_login_hint' is missing") 67 | } 68 | if (markdown.trim() === "") { 69 | throw new Error("Status is BROKEN, but website content is missing") 70 | } 71 | } else if (json.status != "OK" && json.status != "BROKEN" && json.status != "PREPARATION") { 72 | // If status != OK, something is wrong. It must be one of these three 73 | throw new Error("Status is neither OK, BROKEN, nor PREPARATION") 74 | } 75 | 76 | // is server data populated? 77 | if(json.server){ 78 | var has_smtp = false; 79 | var has_imap = false; 80 | json.server.forEach(server => { 81 | try { 82 | testServer(server) 83 | if (server.type == "imap") { 84 | has_imap = true 85 | } else if (server.type == "smtp") { 86 | has_smtp = true 87 | } 88 | } catch (error) { 89 | throw new Error("Error in server definition:" + error.message) 90 | } 91 | }); 92 | if(!(has_imap && has_smtp)){ 93 | throw new Error("Server definition needs atlease one server of both types") 94 | } 95 | } 96 | 97 | // Check that config contains only valid keys 98 | for (const key in json) { 99 | if (![ 100 | 'after_login_hint', 101 | 'before_login_hint', 102 | 'config_defaults', 103 | 'domains', 104 | 'last_checked', 105 | 'name', 106 | 'oauth2', 107 | 'opt', 108 | 'server', 109 | 'status', 110 | 'skip_auto_test', 111 | 'website', 112 | ].includes(key)) { 113 | throw new Error(`Unexpected key "${key}"`) 114 | } 115 | } 116 | } 117 | 118 | (async () => { 119 | 120 | const providers = await fs.readdir(join(__dirname, '../_providers')) 121 | let success = true 122 | 123 | for (let i = 0; i < providers.length; i++) { 124 | const provider = providers[i]; 125 | const fileContent = await fs.readFile(join(__dirname, '../_providers', provider), 'utf-8') 126 | 127 | try { 128 | test(fileContent) 129 | } catch (error) { 130 | console.log(`Error in ${provider}:\n`, error.name, error.message) 131 | success = false 132 | } 133 | } 134 | 135 | process.exit(success?0:1) 136 | })() 137 | 138 | 139 | -------------------------------------------------------------------------------- /validation/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dc-provider-db-validation", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "argparse": { 8 | "version": "1.0.10", 9 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 10 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 11 | "requires": { 12 | "sprintf-js": "~1.0.2" 13 | } 14 | }, 15 | "esprima": { 16 | "version": "4.0.1", 17 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 18 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" 19 | }, 20 | "fs-extra": { 21 | "version": "8.1.0", 22 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 23 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 24 | "requires": { 25 | "graceful-fs": "^4.2.0", 26 | "jsonfile": "^4.0.0", 27 | "universalify": "^0.1.0" 28 | } 29 | }, 30 | "graceful-fs": { 31 | "version": "4.2.3", 32 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", 33 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" 34 | }, 35 | "js-yaml": { 36 | "version": "3.13.1", 37 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", 38 | "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", 39 | "requires": { 40 | "argparse": "^1.0.7", 41 | "esprima": "^4.0.0" 42 | } 43 | }, 44 | "jsonfile": { 45 | "version": "4.0.0", 46 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 47 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 48 | "requires": { 49 | "graceful-fs": "^4.1.6" 50 | } 51 | }, 52 | "sprintf-js": { 53 | "version": "1.0.3", 54 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 55 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" 56 | }, 57 | "universalify": { 58 | "version": "0.1.2", 59 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 60 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 61 | } 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /validation/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dc-provider-db-validation", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "node ." 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "fs-extra": "^8.1.0", 14 | "js-yaml": "^3.13.1" 15 | } 16 | } 17 | --------------------------------------------------------------------------------