mc6 commited on
Commit
3240932
·
verified ·
1 Parent(s): 57bfe98

Upload 4 files

Browse files
Files changed (4) hide show
  1. docker-entrypoint.sh +124 -0
  2. front.conf +113 -0
  3. notify.py +43 -0
  4. services.json +374 -0
docker-entrypoint.sh ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+
3
+ dir_shell=/ql/shell
4
+ . $dir_shell/share.sh
5
+ . $dir_shell/env.sh
6
+
7
+ echo -e "======================写入rclone配置========================\n"
8
+ echo "$RCLONE_CONF" > ~/.config/rclone/rclone.conf
9
+
10
+ echo -e "======================1. 检测配置文件========================\n"
11
+ import_config "$@"
12
+ make_dir /etc/nginx/conf.d
13
+ make_dir /run/nginx
14
+ init_nginx
15
+ fix_config
16
+
17
+ pm2 l &>/dev/null
18
+
19
+ echo -e "======================2. 安装依赖========================\n"
20
+ patch_version
21
+
22
+
23
+ echo -e "======================3. 启动nginx========================\n"
24
+ nginx -s reload 2>/dev/null || nginx -c /etc/nginx/nginx.conf
25
+ echo -e "nginx启动成功...\n"
26
+
27
+ echo -e "======================4. 启动pm2服务========================\n"
28
+ reload_update
29
+ reload_pm2
30
+
31
+ if [[ $AutoStartBot == true ]]; then
32
+ echo -e "======================5. 启动bot========================\n"
33
+ nohup ql bot >$dir_log/bot.log 2>&1 &
34
+ echo -e "bot后台启动中...\n"
35
+ fi
36
+
37
+ if [[ $EnableExtraShell == true ]]; then
38
+ echo -e "====================6. 执行自定义脚本========================\n"
39
+ nohup ql extra >$dir_log/extra.log 2>&1 &
40
+ echo -e "自定义脚本后台执行中...\n"
41
+ fi
42
+
43
+
44
+ echo -e "############################################################\n"
45
+ echo -e "容器启动成功..."
46
+ echo -e "############################################################\n"
47
+
48
+
49
+ echo -e "##########写入登陆信息############"
50
+ #echo "{ \"username\": \"$ADMIN_USERNAME\", \"password\": \"$ADMIN_PASSWORD\" }" > /ql/data/config/auth.json
51
+ dir_root=/ql && source /ql/shell/api.sh
52
+ init_auth_info() {
53
+ local body="$1"
54
+ local tip="$2"
55
+ local currentTimeStamp=$(date +%s)
56
+ local api=$(
57
+ curl -s --noproxy "*" "http://0.0.0.0:5600/api/user/init?t=$currentTimeStamp" \
58
+ -X 'PUT' \
59
+ -H "Accept: application/json" \
60
+ -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" \
61
+ -H "Content-Type: application/json;charset=UTF-8" \
62
+ -H "Origin: http://0.0.0.0:5700" \
63
+ -H "Referer: http://0.0.0.0:5700/crontab" \
64
+ -H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \
65
+ --data-raw "{$body}" \
66
+ --compressed
67
+ )
68
+ code=$(echo "$api" | jq -r .code)
69
+ message=$(echo "$api" | jq -r .message)
70
+ if [[ $code == 200 ]]; then
71
+ echo -e "${tip}成功🎉"
72
+ else
73
+ echo -e "${tip}失败(${message})"
74
+ fi
75
+ }
76
+
77
+ init_auth_info "\"username\": \"$ADMIN_USERNAME\", \"password\": \"$ADMIN_PASSWORD\"" "Change Password"
78
+
79
+ if [ -n "$RCLONE_CONF" ]; then
80
+ echo -e "##########同步备份############"
81
+ # 指定远程文件夹路径,格式为 remote:path
82
+ REMOTE_FOLDER="huggingface:/qinglong"
83
+
84
+ # 使用 rclone ls 命令列出文件夹内容,将输出和错误分别捕获
85
+ OUTPUT=$(rclone ls "$REMOTE_FOLDER" 2>&1)
86
+
87
+ # 获取 rclone 命令的退出状态码
88
+ EXIT_CODE=$?
89
+
90
+ # 判断退出状态码
91
+ if [ $EXIT_CODE -eq 0 ]; then
92
+ # rclone 命令成功执行,检查文件夹是否为空
93
+ if [ -z "$OUTPUT" ]; then
94
+ #为空不处理
95
+ #rclone sync --interactive /ql $REMOTE_FOLDER
96
+ echo "初次安装"
97
+ else
98
+ #echo "文件夹不为空"
99
+ mkdir /ql/.tmp/data
100
+ rclone sync $REMOTE_FOLDER /ql/.tmp/data && real_time=true ql reload data
101
+ fi
102
+ elif [[ "$OUTPUT" == *"directory not found"* ]]; then
103
+ echo "错误:文件夹不存在"
104
+ else
105
+ echo "错误:$OUTPUT"
106
+ fi
107
+ else
108
+ echo "没有检测到Rclone配置信息"
109
+ fi
110
+
111
+ if [ -n "$NOTIFY_CONFIG" ]; then
112
+ python /notify.py
113
+ dir_root=/ql && source /ql/shell/api.sh && notify_api '青龙服务启动通知' '青龙面板成功启动'
114
+ else
115
+ echo "没有检测到通知配置信息,不进行通知"
116
+ fi
117
+
118
+ #pm2 start code-server --name "code-server" -- --bind-addr 0.0.0.0:7860 --port 7860
119
+ export PASSWORD=$ADMIN_PASSWORD
120
+ code-server --bind-addr 0.0.0.0:7860 --port 7860
121
+
122
+ tail -f /dev/null
123
+
124
+ exec "$@"
front.conf ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ upstream codeServer {
2
+ server 0.0.0.0:7860;
3
+ }
4
+ upstream baseApi {
5
+ server 0.0.0.0:5600;
6
+ }
7
+
8
+ upstream publicApi {
9
+ server 0.0.0.0:5400;
10
+ }
11
+
12
+ upstream updateApi {
13
+ server 0.0.0.0:5300;
14
+ }
15
+
16
+ map $http_upgrade $connection_upgrade {
17
+ default keep-alive;
18
+ 'websocket' upgrade;
19
+ }
20
+
21
+ server {
22
+ IPV4_CONFIG
23
+ IPV6_CONFIG
24
+ ssl_session_timeout 5m;
25
+
26
+ location QL_BASE_URLcoder/ {
27
+ proxy_pass http://codeServer/;
28
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
29
+ proxy_set_header Host $http_host;
30
+ proxy_set_header X-NginX-Proxy true;
31
+ proxy_http_version 1.1;
32
+ proxy_set_header Upgrade $http_upgrade;
33
+ proxy_set_header Connection "upgrade";
34
+ proxy_redirect off;
35
+ proxy_set_header X-Real-IP $remote_addr;
36
+ proxy_buffering off;
37
+ proxy_redirect default;
38
+ proxy_connect_timeout 1800;
39
+ proxy_send_timeout 1800;
40
+ proxy_read_timeout 1800;
41
+ }
42
+
43
+ location QL_BASE_URLapi/update/ {
44
+ proxy_set_header Host $http_host;
45
+ proxy_set_header X-Real-IP $remote_addr;
46
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
47
+ proxy_pass http://updateApi/api/;
48
+ proxy_buffering off;
49
+ proxy_redirect default;
50
+ proxy_connect_timeout 1800;
51
+ proxy_send_timeout 1800;
52
+ proxy_read_timeout 1800;
53
+ }
54
+
55
+ location QL_BASE_URLapi/public/ {
56
+ proxy_set_header Host $http_host;
57
+ proxy_set_header X-Real-IP $remote_addr;
58
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
59
+ proxy_pass http://publicApi/api/;
60
+ proxy_buffering off;
61
+ proxy_redirect default;
62
+ proxy_connect_timeout 1800;
63
+ proxy_send_timeout 1800;
64
+ proxy_read_timeout 1800;
65
+ }
66
+
67
+ location QL_BASE_URLapi/ {
68
+ proxy_set_header Host $http_host;
69
+ proxy_set_header X-Real-IP $remote_addr;
70
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
71
+ proxy_pass http://baseApi/api/;
72
+ proxy_buffering off;
73
+ proxy_redirect default;
74
+ proxy_connect_timeout 1800;
75
+ proxy_send_timeout 1800;
76
+ proxy_read_timeout 1800;
77
+
78
+ proxy_set_header Upgrade $http_upgrade;
79
+ proxy_set_header Connection $connection_upgrade;
80
+ }
81
+
82
+ location QL_BASE_URLopen/ {
83
+ proxy_set_header Host $http_host;
84
+ proxy_set_header X-Real-IP $remote_addr;
85
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
86
+ proxy_pass http://baseApi/open/;
87
+ proxy_buffering off;
88
+ proxy_redirect default;
89
+ proxy_connect_timeout 1800;
90
+ proxy_send_timeout 1800;
91
+ proxy_read_timeout 1800;
92
+ }
93
+
94
+ gzip on;
95
+ gzip_static on;
96
+ gzip_types text/plain application/json application/javascript application/x-javascript text/css application/xml text/javascript;
97
+ gzip_proxied any;
98
+ gzip_vary on;
99
+ gzip_comp_level 6;
100
+ gzip_buffers 16 8k;
101
+ gzip_http_version 1.0;
102
+ QL_ROOT_CONFIG
103
+
104
+ location QL_BASE_URL_LOCATION {
105
+ QL_ALIAS_CONFIG
106
+ index index.html index.htm;
107
+ try_files $uri QL_BASE_URLindex.html;
108
+ }
109
+
110
+ location ~ .*\.(html)$ {
111
+ add_header Cache-Control no-cache;
112
+ }
113
+ }
notify.py ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/python
2
+ import sqlite3
3
+ import os
4
+
5
+ conn = sqlite3.connect('/ql/data/db/database.sqlite')
6
+ # 创建一个游标对象
7
+ cursor = conn.cursor()
8
+
9
+ # 从环境变量获取新的信息值
10
+ new_info_value = os.getenv('NOTIFY_CONFIG')
11
+ # 要更新的信息条件
12
+ update_condition = 'notification'
13
+
14
+ # 执行更新操作
15
+ try:
16
+ cursor.execute("""
17
+ UPDATE Auths
18
+ SET info = ?
19
+ WHERE id = (
20
+ SELECT MIN(id)
21
+ FROM Auths
22
+ WHERE type = ?
23
+ )
24
+ """, (new_info_value, update_condition))
25
+
26
+ # 提交事务
27
+ conn.commit()
28
+
29
+ # 检查影响的行数
30
+ if cursor.rowcount > 0:
31
+ print(f"成功更新通知设置")
32
+ else:
33
+ print("没有找到符合条件的记录。")
34
+
35
+ except sqlite3.Error as e:
36
+ print(f"发生错误: {e}")
37
+
38
+ finally:
39
+ # 关闭游标和连接
40
+ cursor.close()
41
+ conn.close()
42
+
43
+
services.json ADDED
@@ -0,0 +1,374 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "1und1": {
3
+ "host": "smtp.1und1.de",
4
+ "port": 465,
5
+ "secure": true,
6
+ "authMethod": "LOGIN"
7
+ },
8
+
9
+ "Aliyun": {
10
+ "domains": ["aliyun.com"],
11
+ "host": "smtp.aliyun.com",
12
+ "port": 465,
13
+ "secure": true
14
+ },
15
+
16
+ "AOL": {
17
+ "domains": ["aol.com"],
18
+ "host": "smtp.aol.com",
19
+ "port": 587
20
+ },
21
+
22
+ "Bluewin": {
23
+ "host": "smtpauths.bluewin.ch",
24
+ "domains": ["bluewin.ch"],
25
+ "port": 465
26
+ },
27
+
28
+ "Cock": {
29
+ "domains": ["cock.li"],
30
+ "host": "mail.cock.li",
31
+ "port": 465,
32
+ "secure": true
33
+ },
34
+
35
+ "DebugMail": {
36
+ "host": "debugmail.io",
37
+ "port": 25
38
+ },
39
+
40
+ "DynectEmail": {
41
+ "aliases": ["Dynect"],
42
+ "host": "smtp.dynect.net",
43
+ "port": 25
44
+ },
45
+
46
+ "Ethereal": {
47
+ "aliases": ["ethereal.email"],
48
+ "host": "smtp.ethereal.email",
49
+ "port": 587
50
+ },
51
+
52
+ "FastMail": {
53
+ "domains": ["fastmail.fm"],
54
+ "host": "smtp.fastmail.com",
55
+ "port": 465,
56
+ "secure": true
57
+ },
58
+
59
+ "Forward Email": {
60
+ "aliases": ["FE", "ForwardEmail"],
61
+ "domains": ["forwardemail.net"],
62
+ "host": "smtp.forwardemail.net",
63
+ "port": 465,
64
+ "secure": true
65
+ },
66
+
67
+ "Feishu Mail": {
68
+ "aliases": ["Feishu", "FeishuMail"],
69
+ "domains": ["www.feishu.cn"],
70
+ "host": "smtp.feishu.cn",
71
+ "port": 465,
72
+ "secure": true
73
+ },
74
+
75
+ "GandiMail": {
76
+ "aliases": ["Gandi", "Gandi Mail"],
77
+ "host": "mail.gandi.net",
78
+ "port": 587
79
+ },
80
+
81
+ "Gmail": {
82
+ "aliases": ["Google Mail"],
83
+ "domains": ["gmail.com", "googlemail.com"],
84
+ "host": "smtp.gmail.com",
85
+ "port": 465,
86
+ "secure": true
87
+ },
88
+
89
+ "Godaddy": {
90
+ "host": "smtpout.secureserver.net",
91
+ "port": 25
92
+ },
93
+
94
+ "GodaddyAsia": {
95
+ "host": "smtp.asia.secureserver.net",
96
+ "port": 25
97
+ },
98
+
99
+ "GodaddyEurope": {
100
+ "host": "smtp.europe.secureserver.net",
101
+ "port": 25
102
+ },
103
+
104
+ "hot.ee": {
105
+ "host": "mail.hot.ee"
106
+ },
107
+
108
+ "Hotmail": {
109
+ "aliases": ["Outlook", "Outlook.com", "Hotmail.com"],
110
+ "domains": ["hotmail.com", "outlook.com"],
111
+ "host": "smtp-mail.outlook.com",
112
+ "port": 587
113
+ },
114
+
115
+ "iCloud": {
116
+ "aliases": ["Me", "Mac"],
117
+ "domains": ["me.com", "mac.com"],
118
+ "host": "smtp.mail.me.com",
119
+ "port": 587
120
+ },
121
+
122
+ "Infomaniak": {
123
+ "host": "mail.infomaniak.com",
124
+ "domains": ["ik.me", "ikmail.com", "etik.com"],
125
+ "port": 587
126
+ },
127
+ "Loopia": {
128
+ "host": "mailcluster.loopia.se",
129
+ "port": 465
130
+ },
131
+
132
+ "Mail.com": {
133
+ "host": "smtp.mail.com",
134
+ "port": 587
135
+ },
136
+
137
+ "mail.ee": {
138
+ "host": "smtp.mail.ee"
139
+ },
140
+
141
+ "Mail.ru": {
142
+ "host": "smtp.mail.ru",
143
+ "port": 465,
144
+ "secure": true
145
+ },
146
+
147
+ "Mailcatch.app": {
148
+ "host": "sandbox-smtp.mailcatch.app",
149
+ "port": 2525
150
+ },
151
+
152
+ "Maildev": {
153
+ "port": 1025,
154
+ "ignoreTLS": true
155
+ },
156
+
157
+ "Mailgun": {
158
+ "host": "smtp.mailgun.org",
159
+ "port": 465,
160
+ "secure": true
161
+ },
162
+
163
+ "Mailjet": {
164
+ "host": "in.mailjet.com",
165
+ "port": 587
166
+ },
167
+
168
+ "Mailosaur": {
169
+ "host": "mailosaur.io",
170
+ "port": 25
171
+ },
172
+
173
+ "Mailtrap": {
174
+ "host": "live.smtp.mailtrap.io",
175
+ "port": 587
176
+ },
177
+
178
+ "Mandrill": {
179
+ "host": "smtp.mandrillapp.com",
180
+ "port": 587
181
+ },
182
+
183
+ "Naver": {
184
+ "host": "smtp.naver.com",
185
+ "port": 587
186
+ },
187
+
188
+ "One": {
189
+ "host": "send.one.com",
190
+ "port": 465,
191
+ "secure": true
192
+ },
193
+
194
+ "OpenMailBox": {
195
+ "aliases": ["OMB", "openmailbox.org"],
196
+ "host": "smtp.openmailbox.org",
197
+ "port": 465,
198
+ "secure": true
199
+ },
200
+
201
+ "Outlook365": {
202
+ "host": "smtp.office365.com",
203
+ "port": 587,
204
+ "secure": false
205
+ },
206
+
207
+ "OhMySMTP": {
208
+ "host": "smtp.ohmysmtp.com",
209
+ "port": 587,
210
+ "secure": false
211
+ },
212
+
213
+ "Postmark": {
214
+ "aliases": ["PostmarkApp"],
215
+ "host": "smtp.postmarkapp.com",
216
+ "port": 2525
217
+ },
218
+
219
+ "qiye.aliyun": {
220
+ "host": "smtp.mxhichina.com",
221
+ "port": "465",
222
+ "secure": true
223
+ },
224
+
225
+ "QQ": {
226
+ "domains": ["qq.com"],
227
+ "host": "smtp.qq.com",
228
+ "port": 465,
229
+ "secure": true
230
+ },
231
+
232
+ "QQex": {
233
+ "aliases": ["QQ Enterprise"],
234
+ "domains": ["exmail.qq.com"],
235
+ "host": "smtp.exmail.qq.com",
236
+ "port": 465,
237
+ "secure": true
238
+ },
239
+
240
+ "SendCloud": {
241
+ "host": "smtp.sendcloud.net",
242
+ "port": 2525
243
+ },
244
+
245
+ "SendGrid": {
246
+ "host": "smtp.sendgrid.net",
247
+ "port": 587
248
+ },
249
+
250
+ "SendinBlue": {
251
+ "aliases": ["Brevo"],
252
+ "host": "smtp-relay.brevo.com",
253
+ "port": 587
254
+ },
255
+
256
+ "SendPulse": {
257
+ "host": "smtp-pulse.com",
258
+ "port": 465,
259
+ "secure": true
260
+ },
261
+
262
+ "Serv00": {
263
+ "domains": ["serv00.com"],
264
+ "host": "mail3.serv00.com",
265
+ "port": 465,
266
+ "secure": true
267
+ },
268
+
269
+ "SES": {
270
+ "host": "email-smtp.us-east-1.amazonaws.com",
271
+ "port": 465,
272
+ "secure": true
273
+ },
274
+
275
+ "SES-US-EAST-1": {
276
+ "host": "email-smtp.us-east-1.amazonaws.com",
277
+ "port": 465,
278
+ "secure": true
279
+ },
280
+
281
+ "SES-US-WEST-2": {
282
+ "host": "email-smtp.us-west-2.amazonaws.com",
283
+ "port": 465,
284
+ "secure": true
285
+ },
286
+
287
+ "SES-EU-WEST-1": {
288
+ "host": "email-smtp.eu-west-1.amazonaws.com",
289
+ "port": 465,
290
+ "secure": true
291
+ },
292
+
293
+ "SES-AP-SOUTH-1": {
294
+ "host": "email-smtp.ap-south-1.amazonaws.com",
295
+ "port": 465,
296
+ "secure": true
297
+ },
298
+
299
+ "SES-AP-NORTHEAST-1": {
300
+ "host": "email-smtp.ap-northeast-1.amazonaws.com",
301
+ "port": 465,
302
+ "secure": true
303
+ },
304
+
305
+ "SES-AP-NORTHEAST-2": {
306
+ "host": "email-smtp.ap-northeast-2.amazonaws.com",
307
+ "port": 465,
308
+ "secure": true
309
+ },
310
+
311
+ "SES-AP-NORTHEAST-3": {
312
+ "host": "email-smtp.ap-northeast-3.amazonaws.com",
313
+ "port": 465,
314
+ "secure": true
315
+ },
316
+
317
+ "SES-AP-SOUTHEAST-1": {
318
+ "host": "email-smtp.ap-southeast-1.amazonaws.com",
319
+ "port": 465,
320
+ "secure": true
321
+ },
322
+
323
+ "SES-AP-SOUTHEAST-2": {
324
+ "host": "email-smtp.ap-southeast-2.amazonaws.com",
325
+ "port": 465,
326
+ "secure": true
327
+ },
328
+
329
+ "Sparkpost": {
330
+ "aliases": ["SparkPost", "SparkPost Mail"],
331
+ "domains": ["sparkpost.com"],
332
+ "host": "smtp.sparkpostmail.com",
333
+ "port": 587,
334
+ "secure": false
335
+ },
336
+
337
+ "Tipimail": {
338
+ "host": "smtp.tipimail.com",
339
+ "port": 587
340
+ },
341
+
342
+ "Yahoo": {
343
+ "domains": ["yahoo.com"],
344
+ "host": "smtp.mail.yahoo.com",
345
+ "port": 465,
346
+ "secure": true
347
+ },
348
+
349
+ "Yandex": {
350
+ "domains": ["yandex.ru"],
351
+ "host": "smtp.yandex.ru",
352
+ "port": 465,
353
+ "secure": true
354
+ },
355
+
356
+ "Zoho": {
357
+ "host": "smtp.zoho.com",
358
+ "port": 465,
359
+ "secure": true,
360
+ "authMethod": "LOGIN"
361
+ },
362
+
363
+ "126": {
364
+ "host": "smtp.126.com",
365
+ "port": 465,
366
+ "secure": true
367
+ },
368
+
369
+ "163": {
370
+ "host": "smtp.163.com",
371
+ "port": 465,
372
+ "secure": true
373
+ }
374
+ }