├── .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 |
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 |
57 | Status
58 |
59 |
60 | Name
61 |
62 |
63 | Domain/s
64 |
65 |
66 |
67 |
68 | {% for provider in site.providers %}
69 |
70 |
74 |
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 |