gitextract_35lf4k5g/ ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── 00-bug.yaml │ │ ├── 01-enhancement.yaml │ │ ├── 02-documentation.yaml │ │ └── 03-question.yaml │ └── PULL_REQUEST_TEMPLATE.MD ├── .gitignore ├── Dockerfiles/ │ ├── core/ │ │ ├── Dockerfile │ │ ├── core.sh │ │ ├── fail2ban.conf │ │ ├── repositories │ │ ├── restart_fail2ban.sh │ │ ├── stop-supervisor.sh │ │ └── supervisord.conf │ ├── dovecot/ │ │ ├── Dockerfile │ │ ├── debian.sources │ │ ├── dovecot.sh │ │ ├── report-ham.sieve │ │ ├── report-spam.sieve │ │ ├── rotate_log.sh │ │ ├── sa-learn-ham.sh │ │ ├── sa-learn-spam.sh │ │ ├── spam-to-folder.sieve │ │ ├── stop-supervisor.sh │ │ └── supervisord.conf │ ├── postfix/ │ │ ├── Dockerfile │ │ ├── debian.sources │ │ ├── postfix.sh │ │ ├── rotate_log.sh │ │ ├── stop-supervisor.sh │ │ └── supervisord.conf │ └── rspamd/ │ ├── Dockerfile │ ├── debian.sources │ ├── rotate_log.sh │ ├── rspamd.sh │ ├── stop-supervisor.sh │ └── supervisord.conf ├── LICENSE ├── README-ja.md ├── README-tr.md ├── README-zh_CN.md ├── README.md ├── SECURITY.md ├── bm.sh ├── conf/ │ ├── core/ │ │ └── fail2ban_init/ │ │ ├── filter.d/ │ │ │ ├── core-limit-filter.conf │ │ │ └── roundcube-limit-filter.conf │ │ └── jail.d/ │ │ ├── core-accesslimit.conf │ │ └── roundcube-accesslimit.conf │ ├── dovecot/ │ │ ├── conf.d/ │ │ │ ├── 10-auth.conf │ │ │ ├── 10-director.conf │ │ │ ├── 10-logging.conf │ │ │ ├── 10-mail.conf │ │ │ ├── 10-master.conf │ │ │ ├── 10-ssl.conf │ │ │ ├── 10-tcpwrapper.conf │ │ │ ├── 15-lda.conf │ │ │ ├── 15-mailboxes.conf │ │ │ ├── 20-imap.conf │ │ │ ├── 20-lmtp.conf │ │ │ ├── 20-pop3.conf │ │ │ ├── 90-acl.conf │ │ │ ├── 90-plugin.conf │ │ │ ├── 90-quota.conf │ │ │ ├── 90-sieve-extprograms.conf │ │ │ ├── 90-sieve.conf │ │ │ ├── 90-sieve_rspamd.conf │ │ │ ├── auth-checkpassword.conf.ext │ │ │ ├── auth-deny.conf.ext │ │ │ ├── auth-dict.conf.ext │ │ │ ├── auth-ldap.conf.ext │ │ │ ├── auth-master.conf.ext │ │ │ ├── auth-passwdfile.conf.ext │ │ │ ├── auth-sql.conf.ext │ │ │ ├── auth-static.conf.ext │ │ │ └── auth-system.conf.ext │ │ ├── dovecot.conf │ │ └── rsyslog.conf │ ├── php/ │ │ ├── pear.conf │ │ ├── php/ │ │ │ └── conf.d/ │ │ │ ├── docker-fpm.ini │ │ │ ├── docker-php-ext-exif.ini │ │ │ ├── docker-php-ext-gd.ini │ │ │ ├── docker-php-ext-imagick.ini │ │ │ ├── docker-php-ext-intl.ini │ │ │ ├── docker-php-ext-ldap.ini │ │ │ ├── docker-php-ext-opcache.ini │ │ │ ├── docker-php-ext-pdo_mysql.ini │ │ │ ├── docker-php-ext-pdo_pgsql.ini │ │ │ ├── docker-php-ext-pspell.ini │ │ │ ├── docker-php-ext-redis.ini │ │ │ ├── docker-php-ext-sodium.ini │ │ │ ├── docker-php-ext-zip.ini │ │ │ └── roundcube-defaults.ini │ │ ├── php-fpm.conf │ │ ├── php-fpm.conf.default │ │ └── php-fpm.d/ │ │ ├── docker.conf │ │ ├── www.conf │ │ └── www.conf.default │ ├── postfix/ │ │ ├── main.cf │ │ ├── master.cf │ │ └── rsyslog.conf │ ├── redis/ │ │ └── redis-conf.sh │ ├── rspamd/ │ │ ├── local.d/ │ │ │ └── milter_headers.conf │ │ ├── rspamd.conf │ │ └── statistic.conf │ ├── supplier/ │ │ └── template/ │ │ ├── Anthropic/ │ │ │ ├── config.json │ │ │ ├── embedding.json │ │ │ └── models.json │ │ ├── DeepSeek/ │ │ │ ├── config.json │ │ │ ├── embedding.json │ │ │ └── models.json │ │ ├── Gemini/ │ │ │ ├── config.json │ │ │ ├── embedding.json │ │ │ └── models.json │ │ ├── Grok/ │ │ │ ├── config.json │ │ │ ├── embedding.json │ │ │ └── models.json │ │ ├── Kimi/ │ │ │ ├── config.json │ │ │ ├── embedding.json │ │ │ └── models.json │ │ └── OpenAI/ │ │ ├── config.json │ │ ├── embedding.json │ │ └── models.json │ └── webmail/ │ ├── custom.inc.php │ └── mime.types ├── core/ │ ├── .gitattributes │ ├── .gitignore │ ├── Makefile │ ├── README.MD │ ├── api/ │ │ ├── abnormal_recipient/ │ │ │ ├── abnormal_recipient.go │ │ │ └── v1/ │ │ │ └── abnormal_recipient.go │ │ ├── askai/ │ │ │ ├── askai.go │ │ │ └── v1/ │ │ │ ├── chat.go │ │ │ ├── project.go │ │ │ └── supplier.go │ │ ├── batch_mail/ │ │ │ ├── batch_mail.go │ │ │ └── v1/ │ │ │ ├── api_mail.go │ │ │ ├── batch_mail.go │ │ │ ├── task_executor.go │ │ │ └── unsubscribe.go │ │ ├── campaign/ │ │ │ ├── campaign.go │ │ │ └── v1/ │ │ │ └── subscription.go │ │ ├── contact/ │ │ │ ├── contact.go │ │ │ └── v1/ │ │ │ └── contact.go │ │ ├── dockerapi/ │ │ │ ├── dockerapi.go │ │ │ └── v1/ │ │ │ └── dockerapi.go │ │ ├── domains/ │ │ │ ├── domains.go │ │ │ └── v1/ │ │ │ ├── domain_blocklist.go │ │ │ ├── domains.go │ │ │ ├── multi_ip_domain.go │ │ │ └── ssl.go │ │ ├── email_template/ │ │ │ ├── email_template.go │ │ │ └── v1/ │ │ │ └── email_template.go │ │ ├── files/ │ │ │ ├── files.go │ │ │ └── v1/ │ │ │ └── files.go │ │ ├── languages/ │ │ │ ├── languages.go │ │ │ └── v1/ │ │ │ └── languages.go │ │ ├── mail_boxes/ │ │ │ ├── mail_boxes.go │ │ │ └── v1/ │ │ │ └── mailboxes.go │ │ ├── mail_services/ │ │ │ ├── mail_services.go │ │ │ └── v1/ │ │ │ ├── common.go │ │ │ ├── mail_bcc.go │ │ │ ├── mail_forward.go │ │ │ └── postfix_queue.go │ │ ├── operation_log/ │ │ │ ├── operation_log.go │ │ │ └── v1/ │ │ │ └── operation_log.go │ │ ├── overview/ │ │ │ ├── overview.go │ │ │ └── v1/ │ │ │ └── overview.go │ │ ├── rbac/ │ │ │ ├── rbac.go │ │ │ └── v1/ │ │ │ ├── account.go │ │ │ ├── auth.go │ │ │ ├── permission.go │ │ │ └── role.go │ │ ├── relay/ │ │ │ ├── relay.go │ │ │ └── v1/ │ │ │ └── relay.go │ │ ├── settings/ │ │ │ ├── settings.go │ │ │ └── v1/ │ │ │ └── settings.go │ │ ├── subscribe_list/ │ │ │ ├── subscribe_list.go │ │ │ └── v1/ │ │ │ └── subscribe_list.go │ │ └── tags/ │ │ ├── tags.go │ │ └── v1/ │ │ └── tags.go │ ├── cmd/ │ │ └── acme/ │ │ ├── Makefile │ │ └── main.go │ ├── frontend/ │ │ ├── .eslintrc-auto-import.json │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── build/ │ │ │ ├── config.ts │ │ │ └── utils.ts │ │ ├── build-for-git.js │ │ ├── eslint.config.mjs │ │ ├── git-pull.js │ │ ├── index.html │ │ ├── package.json │ │ ├── public/ │ │ │ └── static/ │ │ │ └── plugin/ │ │ │ └── monaco/ │ │ │ ├── base/ │ │ │ │ └── worker/ │ │ │ │ └── workerMain.js │ │ │ ├── basic-languages/ │ │ │ │ ├── abap/ │ │ │ │ │ └── abap.js │ │ │ │ ├── apex/ │ │ │ │ │ └── apex.js │ │ │ │ ├── azcli/ │ │ │ │ │ └── azcli.js │ │ │ │ ├── bat/ │ │ │ │ │ └── bat.js │ │ │ │ ├── bicep/ │ │ │ │ │ └── bicep.js │ │ │ │ ├── cameligo/ │ │ │ │ │ └── cameligo.js │ │ │ │ ├── clojure/ │ │ │ │ │ └── clojure.js │ │ │ │ ├── coffee/ │ │ │ │ │ └── coffee.js │ │ │ │ ├── cpp/ │ │ │ │ │ └── cpp.js │ │ │ │ ├── csharp/ │ │ │ │ │ └── csharp.js │ │ │ │ ├── csp/ │ │ │ │ │ └── csp.js │ │ │ │ ├── css/ │ │ │ │ │ └── css.js │ │ │ │ ├── cypher/ │ │ │ │ │ └── cypher.js │ │ │ │ ├── dart/ │ │ │ │ │ └── dart.js │ │ │ │ ├── dockerfile/ │ │ │ │ │ └── dockerfile.js │ │ │ │ ├── ecl/ │ │ │ │ │ └── ecl.js │ │ │ │ ├── elixir/ │ │ │ │ │ └── elixir.js │ │ │ │ ├── flow9/ │ │ │ │ │ └── flow9.js │ │ │ │ ├── freemarker2/ │ │ │ │ │ └── freemarker2.js │ │ │ │ ├── fsharp/ │ │ │ │ │ └── fsharp.js │ │ │ │ ├── go/ │ │ │ │ │ └── go.js │ │ │ │ ├── graphql/ │ │ │ │ │ └── graphql.js │ │ │ │ ├── handlebars/ │ │ │ │ │ └── handlebars.js │ │ │ │ ├── hcl/ │ │ │ │ │ └── hcl.js │ │ │ │ ├── html/ │ │ │ │ │ └── html.js │ │ │ │ ├── ini/ │ │ │ │ │ └── ini.js │ │ │ │ ├── java/ │ │ │ │ │ └── java.js │ │ │ │ ├── javascript/ │ │ │ │ │ └── javascript.js │ │ │ │ ├── julia/ │ │ │ │ │ └── julia.js │ │ │ │ ├── kotlin/ │ │ │ │ │ └── kotlin.js │ │ │ │ ├── less/ │ │ │ │ │ └── less.js │ │ │ │ ├── lexon/ │ │ │ │ │ └── lexon.js │ │ │ │ ├── liquid/ │ │ │ │ │ └── liquid.js │ │ │ │ ├── lua/ │ │ │ │ │ └── lua.js │ │ │ │ ├── m3/ │ │ │ │ │ └── m3.js │ │ │ │ ├── markdown/ │ │ │ │ │ └── markdown.js │ │ │ │ ├── mdx/ │ │ │ │ │ └── mdx.js │ │ │ │ ├── mips/ │ │ │ │ │ └── mips.js │ │ │ │ ├── msdax/ │ │ │ │ │ └── msdax.js │ │ │ │ ├── mysql/ │ │ │ │ │ └── mysql.js │ │ │ │ ├── objective-c/ │ │ │ │ │ └── objective-c.js │ │ │ │ ├── pascal/ │ │ │ │ │ └── pascal.js │ │ │ │ ├── pascaligo/ │ │ │ │ │ └── pascaligo.js │ │ │ │ ├── perl/ │ │ │ │ │ └── perl.js │ │ │ │ ├── pgsql/ │ │ │ │ │ └── pgsql.js │ │ │ │ ├── php/ │ │ │ │ │ └── php.js │ │ │ │ ├── pla/ │ │ │ │ │ └── pla.js │ │ │ │ ├── postiats/ │ │ │ │ │ └── postiats.js │ │ │ │ ├── powerquery/ │ │ │ │ │ └── powerquery.js │ │ │ │ ├── powershell/ │ │ │ │ │ └── powershell.js │ │ │ │ ├── protobuf/ │ │ │ │ │ └── protobuf.js │ │ │ │ ├── pug/ │ │ │ │ │ └── pug.js │ │ │ │ ├── python/ │ │ │ │ │ └── python.js │ │ │ │ ├── qsharp/ │ │ │ │ │ └── qsharp.js │ │ │ │ ├── r/ │ │ │ │ │ └── r.js │ │ │ │ ├── razor/ │ │ │ │ │ └── razor.js │ │ │ │ ├── redis/ │ │ │ │ │ └── redis.js │ │ │ │ ├── redshift/ │ │ │ │ │ └── redshift.js │ │ │ │ ├── restructuredtext/ │ │ │ │ │ └── restructuredtext.js │ │ │ │ ├── ruby/ │ │ │ │ │ └── ruby.js │ │ │ │ ├── rust/ │ │ │ │ │ └── rust.js │ │ │ │ ├── sb/ │ │ │ │ │ └── sb.js │ │ │ │ ├── scala/ │ │ │ │ │ └── scala.js │ │ │ │ ├── scheme/ │ │ │ │ │ └── scheme.js │ │ │ │ ├── scss/ │ │ │ │ │ └── scss.js │ │ │ │ ├── shell/ │ │ │ │ │ └── shell.js │ │ │ │ ├── solidity/ │ │ │ │ │ └── solidity.js │ │ │ │ ├── sophia/ │ │ │ │ │ └── sophia.js │ │ │ │ ├── sparql/ │ │ │ │ │ └── sparql.js │ │ │ │ ├── sql/ │ │ │ │ │ └── sql.js │ │ │ │ ├── st/ │ │ │ │ │ └── st.js │ │ │ │ ├── swift/ │ │ │ │ │ └── swift.js │ │ │ │ ├── systemverilog/ │ │ │ │ │ └── systemverilog.js │ │ │ │ ├── tcl/ │ │ │ │ │ └── tcl.js │ │ │ │ ├── twig/ │ │ │ │ │ └── twig.js │ │ │ │ ├── typescript/ │ │ │ │ │ └── typescript.js │ │ │ │ ├── typespec/ │ │ │ │ │ └── typespec.js │ │ │ │ ├── vb/ │ │ │ │ │ └── vb.js │ │ │ │ ├── wgsl/ │ │ │ │ │ └── wgsl.js │ │ │ │ ├── xml/ │ │ │ │ │ └── xml.js │ │ │ │ └── yaml/ │ │ │ │ └── yaml.js │ │ │ ├── editor/ │ │ │ │ ├── editor.main.css │ │ │ │ └── editor.main.js │ │ │ ├── language/ │ │ │ │ ├── css/ │ │ │ │ │ ├── cssMode.js │ │ │ │ │ └── cssWorker.js │ │ │ │ ├── html/ │ │ │ │ │ ├── htmlMode.js │ │ │ │ │ └── htmlWorker.js │ │ │ │ ├── json/ │ │ │ │ │ ├── jsonMode.js │ │ │ │ │ └── jsonWorker.js │ │ │ │ └── typescript/ │ │ │ │ ├── tsMode.js │ │ │ │ └── tsWorker.js │ │ │ ├── loader.js │ │ │ ├── nls.messages.de.js │ │ │ ├── nls.messages.es.js │ │ │ ├── nls.messages.fr.js │ │ │ ├── nls.messages.it.js │ │ │ ├── nls.messages.ja.js │ │ │ ├── nls.messages.ko.js │ │ │ ├── nls.messages.ru.js │ │ │ ├── nls.messages.zh-cn.js │ │ │ └── nls.messages.zh-tw.js │ │ ├── rsbuild.config.ts │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── api/ │ │ │ │ ├── index.ts │ │ │ │ └── modules/ │ │ │ │ ├── api.ts │ │ │ │ ├── contacts/ │ │ │ │ │ ├── group.ts │ │ │ │ │ ├── subscribers.ts │ │ │ │ │ └── suspend.ts │ │ │ │ ├── domain.ts │ │ │ │ ├── mailbox.ts │ │ │ │ ├── market/ │ │ │ │ │ ├── task.ts │ │ │ │ │ └── template.ts │ │ │ │ ├── overview.ts │ │ │ │ ├── public.ts │ │ │ │ ├── settings/ │ │ │ │ │ ├── bcc.ts │ │ │ │ │ ├── common.ts │ │ │ │ │ └── forward.ts │ │ │ │ ├── settings.ts │ │ │ │ ├── smtp.ts │ │ │ │ └── user.ts │ │ │ ├── components/ │ │ │ │ ├── base/ │ │ │ │ │ ├── bt-charts/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-close-btn/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-code/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-editor/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-file-upload/ │ │ │ │ │ │ ├── UploadError.vue │ │ │ │ │ │ ├── UploadProgress.vue │ │ │ │ │ │ ├── UploadPrompt.vue │ │ │ │ │ │ ├── UploadSuccess.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-help/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-logs/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-more/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-preview/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-route-tabs/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-search/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-table-batch/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-table-help/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-table-layout/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-table-password/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-time/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-time-range/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── bt-tips/ │ │ │ │ │ └── index.vue │ │ │ │ ├── ui/ │ │ │ │ │ ├── bt-config-provider/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-form/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-modal/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── bt-table-page/ │ │ │ │ │ │ └── index.vue │ │ │ │ │ └── bt-tabs/ │ │ │ │ │ └── index.vue │ │ │ │ └── utils/ │ │ │ │ ├── confirm/ │ │ │ │ │ ├── interface.ts │ │ │ │ │ └── method.tsx │ │ │ │ └── message/ │ │ │ │ ├── animation.scss │ │ │ │ ├── index.module.scss │ │ │ │ ├── index.tsx │ │ │ │ ├── interface.ts │ │ │ │ ├── message-list.tsx │ │ │ │ └── method.ts │ │ │ ├── config/ │ │ │ │ └── loadingBar.ts │ │ │ ├── features/ │ │ │ │ └── EmailEditor/ │ │ │ │ ├── components/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── Button.vue │ │ │ │ │ │ ├── Columns.vue │ │ │ │ │ │ ├── Divider.vue │ │ │ │ │ │ ├── Header.vue │ │ │ │ │ │ ├── Image.vue │ │ │ │ │ │ ├── Link.vue │ │ │ │ │ │ ├── Menu.vue │ │ │ │ │ │ ├── None.vue │ │ │ │ │ │ ├── Text.vue │ │ │ │ │ │ ├── columns/ │ │ │ │ │ │ │ ├── ColumnPropertiesPanel.vue │ │ │ │ │ │ │ ├── ColumnsPanel.vue │ │ │ │ │ │ │ └── RowPropertiesPanel.vue │ │ │ │ │ │ └── menu/ │ │ │ │ │ │ ├── Item.vue │ │ │ │ │ │ └── List.vue │ │ │ │ │ ├── elements/ │ │ │ │ │ │ ├── Button.vue │ │ │ │ │ │ ├── Copyright.vue │ │ │ │ │ │ ├── Divider.vue │ │ │ │ │ │ ├── Header.vue │ │ │ │ │ │ ├── Image.vue │ │ │ │ │ │ ├── Link.vue │ │ │ │ │ │ ├── Menu.vue │ │ │ │ │ │ └── Text.vue │ │ │ │ │ ├── layout/ │ │ │ │ │ │ ├── Canvas.vue │ │ │ │ │ │ ├── Cell.vue │ │ │ │ │ │ ├── Columns.vue │ │ │ │ │ │ ├── Section.vue │ │ │ │ │ │ └── Toolbar.vue │ │ │ │ │ ├── menu/ │ │ │ │ │ │ ├── block.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── shared/ │ │ │ │ │ │ ├── Collapse.vue │ │ │ │ │ │ ├── Editor.vue │ │ │ │ │ │ └── None.vue │ │ │ │ │ ├── sidebar/ │ │ │ │ │ │ ├── ConfigTabs.vue │ │ │ │ │ │ ├── Content.vue │ │ │ │ │ │ └── Page.vue │ │ │ │ │ ├── style/ │ │ │ │ │ │ ├── BaseBorder.vue │ │ │ │ │ │ ├── BaseContainer.vue │ │ │ │ │ │ ├── BaseLabel.vue │ │ │ │ │ │ ├── BaseNumber.vue │ │ │ │ │ │ ├── Border.vue │ │ │ │ │ │ ├── Color.vue │ │ │ │ │ │ ├── ContentText.vue │ │ │ │ │ │ ├── FontSize.vue │ │ │ │ │ │ ├── FontWeight.vue │ │ │ │ │ │ ├── Head.vue │ │ │ │ │ │ ├── Image.vue │ │ │ │ │ │ ├── Layout.vue │ │ │ │ │ │ ├── LetterSpacing.vue │ │ │ │ │ │ ├── Line.vue │ │ │ │ │ │ ├── LineHeight.vue │ │ │ │ │ │ ├── Link.vue │ │ │ │ │ │ ├── MoreOptions.vue │ │ │ │ │ │ ├── Padding.vue │ │ │ │ │ │ ├── Rounded.vue │ │ │ │ │ │ ├── TextAlign.vue │ │ │ │ │ │ ├── Title.vue │ │ │ │ │ │ ├── Width.vue │ │ │ │ │ │ ├── WidthAuto.vue │ │ │ │ │ │ ├── WidthNumber.vue │ │ │ │ │ │ └── useNormalForm.tsx │ │ │ │ │ └── toolbar/ │ │ │ │ │ └── index.vue │ │ │ │ ├── config/ │ │ │ │ │ ├── addData.ts │ │ │ │ │ └── config.ts │ │ │ │ ├── containers/ │ │ │ │ │ ├── Editor.vue │ │ │ │ │ ├── EditorMenu.vue │ │ │ │ │ ├── EditorProvider.vue │ │ │ │ │ └── EditorSidebar.vue │ │ │ │ ├── hooks/ │ │ │ │ │ ├── useConfig.ts │ │ │ │ │ ├── useContext.ts │ │ │ │ │ ├── useHtml.ts │ │ │ │ │ ├── useSetData.ts │ │ │ │ │ ├── useStyle.ts │ │ │ │ │ └── useVersion.ts │ │ │ │ ├── index.vue │ │ │ │ ├── store/ │ │ │ │ │ └── index.ts │ │ │ │ ├── types/ │ │ │ │ │ └── base.ts │ │ │ │ └── utils/ │ │ │ │ └── index.ts │ │ │ ├── hooks/ │ │ │ │ ├── modal/ │ │ │ │ │ ├── interface.ts │ │ │ │ │ └── useModal.tsx │ │ │ │ ├── useCopy.ts │ │ │ │ ├── useDataTable.ts │ │ │ │ ├── useFormModal.ts │ │ │ │ └── useTableData.ts │ │ │ ├── i18n/ │ │ │ │ ├── index.ts │ │ │ │ └── lang/ │ │ │ │ ├── en.json │ │ │ │ ├── ja.json │ │ │ │ └── zh.json │ │ │ ├── index.ts │ │ │ ├── layout/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AppHeader.vue │ │ │ │ │ ├── AppMain.vue │ │ │ │ │ ├── Sidebar.vue │ │ │ │ │ └── index.ts │ │ │ │ └── index.vue │ │ │ ├── router/ │ │ │ │ ├── constant.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modules/ │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── automation.ts │ │ │ │ │ ├── contacts.ts │ │ │ │ │ ├── domain.ts │ │ │ │ │ ├── logs.ts │ │ │ │ │ ├── mailbox.ts │ │ │ │ │ ├── market.ts │ │ │ │ │ ├── overview.ts │ │ │ │ │ ├── settings.ts │ │ │ │ │ ├── smtp.ts │ │ │ │ │ └── template.ts │ │ │ │ └── router.ts │ │ │ ├── store/ │ │ │ │ ├── index.ts │ │ │ │ └── modules/ │ │ │ │ ├── global.ts │ │ │ │ ├── menu.ts │ │ │ │ ├── theme.ts │ │ │ │ └── user.ts │ │ │ ├── styles/ │ │ │ │ ├── index.scss │ │ │ │ ├── naive.scss │ │ │ │ ├── reset.scss │ │ │ │ └── variables.scss │ │ │ ├── types/ │ │ │ │ └── chart.ts │ │ │ ├── utils/ │ │ │ │ ├── base.ts │ │ │ │ ├── data.ts │ │ │ │ ├── index.ts │ │ │ │ ├── is.ts │ │ │ │ ├── storage.ts │ │ │ │ └── time.ts │ │ │ └── views/ │ │ │ ├── api/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ApiForm.vue │ │ │ │ │ ├── ApiKey.vue │ │ │ │ │ ├── ApiTest.vue │ │ │ │ │ └── Overview.vue │ │ │ │ ├── index.vue │ │ │ │ └── types/ │ │ │ │ └── base.ts │ │ │ ├── automation/ │ │ │ │ └── index.vue │ │ │ ├── contacts/ │ │ │ │ ├── group/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── GroupAdd.vue │ │ │ │ │ │ └── GroupRename.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ ├── temp.vue │ │ │ │ │ └── types/ │ │ │ │ │ └── base.ts │ │ │ │ ├── index.vue │ │ │ │ ├── settings/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Code.vue │ │ │ │ │ │ ├── Editor.vue │ │ │ │ │ │ ├── SubscribeForm.vue │ │ │ │ │ │ ├── SubscribeSettings.vue │ │ │ │ │ │ └── UnsubscribeSettings.vue │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ └── useContext.ts │ │ │ │ │ ├── index.vue │ │ │ │ │ └── types/ │ │ │ │ │ └── base.ts │ │ │ │ ├── subscribers/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ActiveSelect.vue │ │ │ │ │ │ ├── BatchSetTag.vue │ │ │ │ │ │ ├── GroupMultipleSelect.vue │ │ │ │ │ │ ├── GroupSelect.vue │ │ │ │ │ │ ├── SubscriberEdit.vue │ │ │ │ │ │ ├── SubscriberImport.vue │ │ │ │ │ │ ├── SubscriberTrends.vue │ │ │ │ │ │ └── TagSelect.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── interface.ts │ │ │ │ ├── suspend/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── Scan.vue │ │ │ │ │ │ └── ScanLogs.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── types/ │ │ │ │ │ └── base.ts │ │ │ │ └── tags/ │ │ │ │ ├── components/ │ │ │ │ │ ├── GroupSelect.vue │ │ │ │ │ ├── TagBulk.vue │ │ │ │ │ ├── TagForm.vue │ │ │ │ │ └── TagSelect.vue │ │ │ │ ├── index.vue │ │ │ │ ├── service/ │ │ │ │ │ └── index.ts │ │ │ │ └── types/ │ │ │ │ └── index.ts │ │ │ ├── domain/ │ │ │ │ ├── components/ │ │ │ │ │ ├── BlacklistDetection.vue │ │ │ │ │ ├── CheckLogs.vue │ │ │ │ │ ├── DomainDns.vue │ │ │ │ │ ├── DomainForm.vue │ │ │ │ │ ├── DomainIpSet.vue │ │ │ │ │ ├── DomainSelect.vue │ │ │ │ │ ├── DomainSsl/ │ │ │ │ │ │ ├── OtherCert.vue │ │ │ │ │ │ └── index.vue │ │ │ │ │ ├── IpStatus.vue │ │ │ │ │ ├── NotSpam.vue │ │ │ │ │ └── WaitAndCheckDomainStatus.vue │ │ │ │ ├── index.vue │ │ │ │ ├── interface.ts │ │ │ │ └── pages/ │ │ │ │ └── editDomain/ │ │ │ │ ├── components/ │ │ │ │ │ ├── AISettings.vue │ │ │ │ │ ├── CompanyProfile.vue │ │ │ │ │ ├── DomainConfiguration.vue │ │ │ │ │ ├── FooterSettings.vue │ │ │ │ │ ├── ProjectDetails.vue │ │ │ │ │ ├── Sitemap.vue │ │ │ │ │ ├── Styling.vue │ │ │ │ │ ├── Typography.vue │ │ │ │ │ └── mixin.scss │ │ │ │ ├── controller/ │ │ │ │ │ ├── aiSettings.controller.ts │ │ │ │ │ ├── companyProfile.controller.ts │ │ │ │ │ ├── domainConfiguration.controller.ts │ │ │ │ │ ├── footerSettings.controller.ts │ │ │ │ │ ├── projectDetail.controller.ts │ │ │ │ │ ├── sitemap.controller.ts │ │ │ │ │ ├── styling.controller.ts │ │ │ │ │ └── typography.controller.ts │ │ │ │ ├── dto/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.vue │ │ │ │ └── store/ │ │ │ │ └── index.ts │ │ │ ├── login/ │ │ │ │ └── index.vue │ │ │ ├── logs/ │ │ │ │ ├── error/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.vue │ │ │ │ ├── index.vue │ │ │ │ └── operate/ │ │ │ │ ├── controller/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.vue │ │ │ │ └── types/ │ │ │ │ └── index.ts │ │ │ ├── mailbox/ │ │ │ │ ├── components/ │ │ │ │ │ ├── DomainSelect.vue │ │ │ │ │ ├── MailboxBatchAdd.vue │ │ │ │ │ ├── MailboxExport.vue │ │ │ │ │ ├── MailboxForm.vue │ │ │ │ │ └── MailboxImport.vue │ │ │ │ ├── index.vue │ │ │ │ └── interface.ts │ │ │ ├── market/ │ │ │ │ ├── index.vue │ │ │ │ ├── task/ │ │ │ │ │ ├── analytics.vue │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── CreateGroup.vue │ │ │ │ │ │ ├── FromSelect.vue │ │ │ │ │ │ ├── GroupSelect.vue │ │ │ │ │ │ ├── TagSelect.vue │ │ │ │ │ │ ├── TaskDetail.vue │ │ │ │ │ │ ├── TaskStatus.vue │ │ │ │ │ │ ├── TaskStatusDetails.vue │ │ │ │ │ │ └── TemplateSelect.vue │ │ │ │ │ ├── edit.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── interface.ts │ │ │ │ └── template/ │ │ │ │ ├── components/ │ │ │ │ │ ├── TemplateAdd.vue │ │ │ │ │ ├── TemplateForm.vue │ │ │ │ │ └── TemplatePreview.vue │ │ │ │ ├── edit.vue │ │ │ │ ├── index.vue │ │ │ │ └── interface.ts │ │ │ ├── overview/ │ │ │ │ ├── components/ │ │ │ │ │ ├── BarChart.vue │ │ │ │ │ ├── FilterBar.vue │ │ │ │ │ ├── LineChart.vue │ │ │ │ │ ├── MetricCard.vue │ │ │ │ │ ├── ProviderTable.vue │ │ │ │ │ ├── RateChartPanel.vue │ │ │ │ │ ├── SendFailDetails.vue │ │ │ │ │ └── SendTodayStats.vue │ │ │ │ ├── index.vue │ │ │ │ └── types/ │ │ │ │ └── index.ts │ │ │ ├── settings/ │ │ │ │ ├── ai-model/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── AddModel.vue │ │ │ │ │ │ ├── AddProvider.vue │ │ │ │ │ │ └── ModelManager.vue │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.vue │ │ │ │ │ └── store/ │ │ │ │ │ └── index,.ts │ │ │ │ ├── bcc/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── BccForm.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── type/ │ │ │ │ │ └── base.ts │ │ │ │ ├── common/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── ApiSettings.vue │ │ │ │ │ │ ├── Command.vue │ │ │ │ │ │ ├── DomainSettings.vue │ │ │ │ │ │ ├── IpWhitelistSettings.vue │ │ │ │ │ │ ├── NetworkSettings.vue │ │ │ │ │ │ ├── Notify/ │ │ │ │ │ │ │ ├── AlarmSettings.vue │ │ │ │ │ │ │ ├── AutoCheckSettings.vue │ │ │ │ │ │ │ ├── BlacklistSetting.vue │ │ │ │ │ │ │ └── NotifySettings.vue │ │ │ │ │ │ ├── PasswordSettings.vue │ │ │ │ │ │ ├── PasswordStrengthIndicator.vue │ │ │ │ │ │ ├── PortSettings.vue │ │ │ │ │ │ ├── ProxySettings.vue │ │ │ │ │ │ ├── SSLSettings.vue │ │ │ │ │ │ ├── SecurityPathSettings.vue │ │ │ │ │ │ ├── SecuritySettings.vue │ │ │ │ │ │ ├── System/ │ │ │ │ │ │ │ └── RetentionTime.vue │ │ │ │ │ │ ├── SystemSettings.vue │ │ │ │ │ │ ├── TimezoneSettings.vue │ │ │ │ │ │ └── UsernameSettings.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ ├── store/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── types/ │ │ │ │ │ └── base.ts │ │ │ │ ├── forward/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── ForwardForm.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── types/ │ │ │ │ │ └── base.ts │ │ │ │ ├── index.vue │ │ │ │ ├── rspamd/ │ │ │ │ │ └── index.vue │ │ │ │ ├── send-queue/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── param-config.vue │ │ │ │ │ │ └── queue-logs.vue │ │ │ │ │ ├── index.vue │ │ │ │ │ └── types/ │ │ │ │ │ └── index.ts │ │ │ │ └── service/ │ │ │ │ ├── components/ │ │ │ │ │ ├── ServiceConfig.vue │ │ │ │ │ └── SettingsService.vue │ │ │ │ ├── index.vue │ │ │ │ └── types/ │ │ │ │ └── common.ts │ │ │ ├── smtp/ │ │ │ │ ├── components/ │ │ │ │ │ ├── SmtpCard.vue │ │ │ │ │ ├── SmtpDns.vue │ │ │ │ │ ├── SmtpForm.vue │ │ │ │ │ ├── SmtpLoading.vue │ │ │ │ │ └── SmtpStatus.vue │ │ │ │ ├── index.vue │ │ │ │ └── types/ │ │ │ │ └── base.ts │ │ │ ├── template/ │ │ │ │ ├── components/ │ │ │ │ │ ├── CreateTplModal.vue │ │ │ │ │ ├── TemplateAdd.vue │ │ │ │ │ ├── TemplateForm.vue │ │ │ │ │ └── TemplatePreview.vue │ │ │ │ ├── controller/ │ │ │ │ │ └── index.ts │ │ │ │ ├── dto/ │ │ │ │ │ └── index.ts │ │ │ │ ├── edit.vue │ │ │ │ ├── index.vue │ │ │ │ ├── index.vue.bak │ │ │ │ ├── interface.ts │ │ │ │ ├── mixin.scss │ │ │ │ ├── pages/ │ │ │ │ │ └── AITemplate/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── MarkdownRender.vue │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── dto/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── highlight.theme.css │ │ │ │ │ ├── index.vue │ │ │ │ │ └── store/ │ │ │ │ │ └── index.ts │ │ │ │ └── store/ │ │ │ │ └── index.ts │ │ │ └── test/ │ │ │ └── index.vue │ │ ├── tsconfig.json │ │ ├── types/ │ │ │ ├── auto-import.d.ts │ │ │ ├── components.d.ts │ │ │ └── env.d.ts │ │ └── uno.config.ts │ ├── go-build.sh │ ├── go.mod │ ├── go.sum │ ├── hack/ │ │ ├── config.yaml │ │ ├── hack-cli.mk │ │ └── hack.mk │ ├── internal/ │ │ ├── cmd/ │ │ │ └── cmd.go │ │ ├── consts/ │ │ │ ├── consts.go │ │ │ ├── log_type.go │ │ │ └── mail_providers.go │ │ ├── controller/ │ │ │ ├── abnormal_recipient/ │ │ │ │ ├── abnormal_recipient.go │ │ │ │ ├── abnormal_recipient_new.go │ │ │ │ ├── abnormal_recipient_v1_abnormal_switch.go │ │ │ │ ├── abnormal_recipient_v1_add_abnormal_recipient.go │ │ │ │ ├── abnormal_recipient_v1_check_group.go │ │ │ │ ├── abnormal_recipient_v1_clearabnormal_recipient.go │ │ │ │ ├── abnormal_recipient_v1_delete_abnormal_recipient.go │ │ │ │ ├── abnormal_recipient_v1_get_scan_log.go │ │ │ │ ├── abnormal_recipient_v1_list_abnormal_recipient.go │ │ │ │ └── abnormal_recipient_v1_set_abnormal_switch.go │ │ │ ├── askai/ │ │ │ │ ├── askai.go │ │ │ │ ├── askai_new.go │ │ │ │ ├── askai_v1_chat.go │ │ │ │ ├── askai_v1_project.go │ │ │ │ └── askai_v1_supplier.go │ │ │ ├── batch_mail/ │ │ │ │ ├── batch_mail.go │ │ │ │ ├── batch_mail_new.go │ │ │ │ ├── batch_mail_v1_api_mail_batch_send.go │ │ │ │ ├── batch_mail_v1_api_mail_send.go │ │ │ │ ├── batch_mail_v1_api_overview_stats.go │ │ │ │ ├── batch_mail_v1_api_templates_create.go │ │ │ │ ├── batch_mail_v1_api_templates_delete.go │ │ │ │ ├── batch_mail_v1_api_templates_list.go │ │ │ │ ├── batch_mail_v1_api_templates_update.go │ │ │ │ ├── batch_mail_v1_create_task.go │ │ │ │ ├── batch_mail_v1_delete_task.go │ │ │ │ ├── batch_mail_v1_get_task_mail_logs.go │ │ │ │ ├── batch_mail_v1_get_task_send_count.go │ │ │ │ ├── batch_mail_v1_get_user_groups.go │ │ │ │ ├── batch_mail_v1_list_tasks.go │ │ │ │ ├── batch_mail_v1_pause_task.go │ │ │ │ ├── batch_mail_v1_resume_task.go │ │ │ │ ├── batch_mail_v1_send_test_email.go │ │ │ │ ├── batch_mail_v1_task_info.go │ │ │ │ ├── batch_mail_v1_task_mail_provider_stat.go │ │ │ │ ├── batch_mail_v1_task_overview.go │ │ │ │ ├── batch_mail_v1_task_stat_chart.go │ │ │ │ ├── batch_mail_v1_unsubscribe.go │ │ │ │ ├── batch_mail_v1_unsubscribe_new.go │ │ │ │ ├── batch_mail_v1_update_task_info.go │ │ │ │ └── batch_mail_v1_update_task_speed.go │ │ │ ├── campaign/ │ │ │ │ ├── campaign.go │ │ │ │ ├── campaign_new.go │ │ │ │ └── campaign_v1_form.go │ │ │ ├── contact/ │ │ │ │ ├── contact.go │ │ │ │ ├── contact_new.go │ │ │ │ ├── contact_v1_batch_tag_contacts.go │ │ │ │ ├── contact_v1_create_group.go │ │ │ │ ├── contact_v1_delete_contacts.go │ │ │ │ ├── contact_v1_delete_contacts_ndp.go │ │ │ │ ├── contact_v1_delete_group.go │ │ │ │ ├── contact_v1_edit_contacts.go │ │ │ │ ├── contact_v1_edit_contacts_ndp.go │ │ │ │ ├── contact_v1_export_contacts.go │ │ │ │ ├── contact_v1_get_contacts_trend.go │ │ │ │ ├── contact_v1_get_group_contact_count.go │ │ │ │ ├── contact_v1_get_group_info.go │ │ │ │ ├── contact_v1_get_single_group_tag_contact_count.go │ │ │ │ ├── contact_v1_import_contacts.go │ │ │ │ ├── contact_v1_list_contacts.go │ │ │ │ ├── contact_v1_list_contacts_groups.go │ │ │ │ ├── contact_v1_list_contacts_ndp.go │ │ │ │ ├── contact_v1_list_groups.go │ │ │ │ ├── contact_v1_merge_contacts_groups.go │ │ │ │ ├── contact_v1_update_contacts_group.go │ │ │ │ ├── contact_v1_update_group.go │ │ │ │ └── contact_v1_update_group_unsubscribe.go │ │ │ ├── dockerapi/ │ │ │ │ ├── dockerapi.go │ │ │ │ ├── dockerapi_new.go │ │ │ │ ├── dockerapi_v1_container_state.go │ │ │ │ ├── dockerapi_v1_list_container.go │ │ │ │ └── dockerapi_v1_restart_container.go │ │ │ ├── domains/ │ │ │ │ ├── domains.go │ │ │ │ ├── domains_new.go │ │ │ │ ├── domains_v1_add_domain.go │ │ │ │ ├── domains_v1_apply_cert.go │ │ │ │ ├── domains_v1_apply_multi_ip_domain_config.go │ │ │ │ ├── domains_v1_check_blacklist.go │ │ │ │ ├── domains_v1_console_apply_cert.go │ │ │ │ ├── domains_v1_delete_domain.go │ │ │ │ ├── domains_v1_fresh_dns_records.go │ │ │ │ ├── domains_v1_get_blocklist_check_logs.go │ │ │ │ ├── domains_v1_get_cert_list.go │ │ │ │ ├── domains_v1_get_domain.go │ │ │ │ ├── domains_v1_get_domain_all.go │ │ │ │ ├── domains_v1_get_ssl.go │ │ │ │ ├── domains_v1_set_default_domain.go │ │ │ │ ├── domains_v1_set_ssl.go │ │ │ │ ├── domains_v1_test_multi_ip_domain_config.go │ │ │ │ ├── domains_v1_update_domain.go │ │ │ │ └── domains_v1_update_domain_brandinfo.go │ │ │ ├── email_template/ │ │ │ │ ├── email_template.go │ │ │ │ ├── email_template_new.go │ │ │ │ ├── email_template_v1_check_email_content.go │ │ │ │ ├── email_template_v1_copy_template.go │ │ │ │ ├── email_template_v1_create_template.go │ │ │ │ ├── email_template_v1_delete_template.go │ │ │ │ ├── email_template_v1_get_all_templates.go │ │ │ │ ├── email_template_v1_get_template.go │ │ │ │ ├── email_template_v1_list_templates.go │ │ │ │ └── email_template_v1_update_template.go │ │ │ ├── files/ │ │ │ │ ├── files.go │ │ │ │ ├── files_new.go │ │ │ │ ├── files_v1_download_file.go │ │ │ │ └── files_v1_read_file.go │ │ │ ├── languages/ │ │ │ │ ├── languages.go │ │ │ │ ├── languages_new.go │ │ │ │ ├── languages_v1_get_language.go │ │ │ │ └── languages_v1_set_language.go │ │ │ ├── mail_boxes/ │ │ │ │ ├── mail_boxes.go │ │ │ │ ├── mail_boxes_new.go │ │ │ │ ├── mail_boxes_v1_add_mailbox.go │ │ │ │ ├── mail_boxes_v1_batch_add_mailbox.go │ │ │ │ ├── mail_boxes_v1_delete_mailbox.go │ │ │ │ ├── mail_boxes_v1_export_mailbox.go │ │ │ │ ├── mail_boxes_v1_get_all_email.go │ │ │ │ ├── mail_boxes_v1_get_all_mailbox.go │ │ │ │ ├── mail_boxes_v1_get_mailbox.go │ │ │ │ ├── mail_boxes_v1_import_mailbox.go │ │ │ │ └── mail_boxes_v1_update_mailbox.go │ │ │ ├── mail_services/ │ │ │ │ ├── mail_services.go │ │ │ │ ├── mail_services_new.go │ │ │ │ ├── mail_services_v1_add_bcc.go │ │ │ │ ├── mail_services_v1_add_mail_forward.go │ │ │ │ ├── mail_services_v1_delete_all_deferred_queue.go │ │ │ │ ├── mail_services_v1_delete_bcc.go │ │ │ │ ├── mail_services_v1_delete_mail_forward.go │ │ │ │ ├── mail_services_v1_delete_postfix_queue_by_id.go │ │ │ │ ├── mail_services_v1_edit_bcc.go │ │ │ │ ├── mail_services_v1_edit_mail_forward.go │ │ │ │ ├── mail_services_v1_flush_postfix_queue.go │ │ │ │ ├── mail_services_v1_flush_postfix_queue_by_id.go │ │ │ │ ├── mail_services_v1_get_bcc_list.go │ │ │ │ ├── mail_services_v1_get_config_file.go │ │ │ │ ├── mail_services_v1_get_mail_forward_list.go │ │ │ │ ├── mail_services_v1_get_postfix_config.go │ │ │ │ ├── mail_services_v1_get_postfix_queue_info.go │ │ │ │ ├── mail_services_v1_get_postfix_queue_list.go │ │ │ │ ├── mail_services_v1_save_config_file.go │ │ │ │ ├── mail_services_v1_set_all_postfix_config.go │ │ │ │ └── mail_services_v1_set_postfix_config.go │ │ │ ├── middleware/ │ │ │ │ └── ip_whitelist.go │ │ │ ├── operation_log/ │ │ │ │ ├── operation_log.go │ │ │ │ ├── operation_log_new.go │ │ │ │ ├── operation_log_v1_get_latest_output_log.go │ │ │ │ ├── operation_log_v1_get_operation_log.go │ │ │ │ ├── operation_log_v1_get_operation_type.go │ │ │ │ └── operation_log_v1_get_output_log.go │ │ │ ├── overview/ │ │ │ │ ├── overview.go │ │ │ │ ├── overview_new.go │ │ │ │ ├── overview_v1_failed_list.go │ │ │ │ └── overview_v1_overview.go │ │ │ ├── rbac/ │ │ │ │ ├── rbac.go │ │ │ │ ├── rbac_new.go │ │ │ │ ├── rbac_v1_auth.go │ │ │ │ └── rbac_v1_get_validate_code.go │ │ │ ├── relay/ │ │ │ │ ├── relay.go │ │ │ │ ├── relay_new.go │ │ │ │ ├── relay_v1_create_relay_config.go │ │ │ │ ├── relay_v1_delete_relay_config.go │ │ │ │ ├── relay_v1_get_unbound_domains.go │ │ │ │ ├── relay_v1_list_relay_configs.go │ │ │ │ ├── relay_v1_test_smtp_connection.go │ │ │ │ └── relay_v1_update_relay_config.go │ │ │ ├── settings/ │ │ │ │ ├── settings.go │ │ │ │ ├── settings_new.go │ │ │ │ ├── settings_v1_add_ip_whitelist.go │ │ │ │ ├── settings_v1_delete_ip_whitelist.go │ │ │ │ ├── settings_v1_delete_reverse_proxy_domain.go │ │ │ │ ├── settings_v1_get_system_config.go │ │ │ │ ├── settings_v1_get_time_zone_list.go │ │ │ │ ├── settings_v1_get_version.go │ │ │ │ ├── settings_v1_regenerate_api_token.go │ │ │ │ ├── settings_v1_set_api_doc_swagger.go │ │ │ │ ├── settings_v1_set_blacklist_alert.go │ │ │ │ ├── settings_v1_set_blacklist_alert_settings.go │ │ │ │ ├── settings_v1_set_blacklist_auto_scan.go │ │ │ │ ├── settings_v1_set_ip_whitelist.go │ │ │ │ ├── settings_v1_set_reverse_proxy_domain.go │ │ │ │ ├── settings_v1_set_ssl_config.go │ │ │ │ ├── settings_v1_set_system_config.go │ │ │ │ └── settings_v1_set_system_config_key.go │ │ │ ├── subscribe_list/ │ │ │ │ ├── subscribe_list.go │ │ │ │ ├── subscribe_list_new.go │ │ │ │ ├── subscribe_list_v1_subscribe_confirm.go │ │ │ │ └── subscribe_list_v1_subscribe_submit.go │ │ │ └── tags/ │ │ │ ├── tags.go │ │ │ ├── tags_new.go │ │ │ ├── tags_v1_batch_tag_contacts.go │ │ │ ├── tags_v1_tag_all.go │ │ │ ├── tags_v1_tag_create.go │ │ │ ├── tags_v1_tag_delete.go │ │ │ ├── tags_v1_tag_list.go │ │ │ └── tags_v1_tag_update.go │ │ ├── dao/ │ │ │ └── .gitkeep │ │ ├── logic/ │ │ │ └── .gitkeep │ │ ├── model/ │ │ │ ├── .gitkeep │ │ │ ├── blacklist.go │ │ │ ├── do/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── account.go │ │ │ │ ├── permission.go │ │ │ │ └── role.go │ │ │ ├── entity/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── account.go │ │ │ │ ├── account_role.go │ │ │ │ ├── alias.go │ │ │ │ ├── alias_domain.go │ │ │ │ ├── batch_mail.go │ │ │ │ ├── bm_bcc.go │ │ │ │ ├── bm_relay.go │ │ │ │ ├── bm_relay_config.go │ │ │ │ ├── bm_relay_domain_mapping.go │ │ │ │ ├── domain.go │ │ │ │ ├── letsencrypt.go │ │ │ │ ├── mailbox.go │ │ │ │ ├── operation_log.go │ │ │ │ ├── permission.go │ │ │ │ ├── role.go │ │ │ │ ├── role_permission.go │ │ │ │ └── sender_ip_warmup_models.go │ │ │ └── rbac.go │ │ ├── packed/ │ │ │ └── packed.go │ │ └── service/ │ │ ├── .gitkeep │ │ ├── abnormal_recipient/ │ │ │ └── abnormal_recipient.go │ │ ├── acme/ │ │ │ ├── acme.go │ │ │ ├── cli.go │ │ │ ├── cmd.go │ │ │ └── renew.go │ │ ├── askai/ │ │ │ ├── chat.go │ │ │ ├── openai.go │ │ │ ├── project.go │ │ │ ├── prompts.go │ │ │ └── supplier.go │ │ ├── batch_mail/ │ │ │ ├── api_mail_send.go │ │ │ ├── batch_mail.go │ │ │ ├── jwt.go │ │ │ ├── simple_rate_controller.go │ │ │ ├── spintax.go │ │ │ ├── stat_service.go │ │ │ ├── task_executor.go │ │ │ └── template_render.go │ │ ├── collect/ │ │ │ └── collect.go │ │ ├── compress/ │ │ │ ├── gzip.go │ │ │ ├── rar.go │ │ │ └── zip.go │ │ ├── contact/ │ │ │ └── contact.go │ │ ├── contact_activity/ │ │ │ └── contact_activity.go │ │ ├── database_initialization/ │ │ │ ├── batch_mail.go │ │ │ ├── database_initialization.go │ │ │ ├── letsencrypty.go │ │ │ ├── mail_serv.go │ │ │ ├── maillog_stat.go │ │ │ ├── multi_ip_domain.go │ │ │ ├── operation_log.go │ │ │ ├── options.go │ │ │ ├── rbac.go │ │ │ ├── sender_ip_warmup.go │ │ │ ├── smtp_relay.go │ │ │ └── utils.go │ │ ├── dockerapi/ │ │ │ └── dockerapi.go │ │ ├── domains/ │ │ │ ├── baseurl.go │ │ │ ├── blacklist.go │ │ │ ├── dns.go │ │ │ ├── domains.go │ │ │ └── ssl.go │ │ ├── email_template/ │ │ │ └── email_template.go │ │ ├── fail2ban/ │ │ │ └── access_log_detection.go │ │ ├── log_maintenance/ │ │ │ └── core_log.go │ │ ├── mail_boxes/ │ │ │ ├── check_quota_alerts.go │ │ │ ├── init_quota_plugin.go │ │ │ ├── mail_boxes.go │ │ │ └── update_used_space.go │ │ ├── mail_service/ │ │ │ ├── bcc.go │ │ │ ├── certificate.go │ │ │ ├── fix.go │ │ │ └── sending.go │ │ ├── maillog_stat/ │ │ │ ├── aggregate.go │ │ │ ├── encryption.go │ │ │ ├── encryption_test.go │ │ │ ├── maillog_stat.go │ │ │ ├── overview.go │ │ │ ├── tracker.go │ │ │ └── tracker_test.go │ │ ├── middlewares/ │ │ │ ├── HandleApiResponse.go │ │ │ └── rbac.go │ │ ├── multi_ip_domain/ │ │ │ ├── config_manager.go │ │ │ └── multi_ip_domain.go │ │ ├── phpfpm/ │ │ │ └── phpfpm.go │ │ ├── public/ │ │ │ ├── common.go │ │ │ ├── mail_stat_helpers.go │ │ │ ├── operation_log.go │ │ │ ├── options_mgr.go │ │ │ ├── self_signed_cert.go │ │ │ └── validator.go │ │ ├── rbac/ │ │ │ ├── account.go │ │ │ ├── jwt.go │ │ │ ├── permission.go │ │ │ ├── rbac.go │ │ │ ├── role.go │ │ │ ├── service.go │ │ │ ├── validate_code.go │ │ │ └── validate_code_test.go │ │ ├── redis_initialization/ │ │ │ └── redis_initialization.go │ │ ├── relay/ │ │ │ ├── config_sync.go │ │ │ └── smtp_connection_helper.go │ │ ├── rspamd/ │ │ │ └── worker_controller.go │ │ ├── settings/ │ │ │ └── billionmail_hostname.go │ │ ├── timers/ │ │ │ └── timers.go │ │ └── warmup/ │ │ ├── rate_limiter.go │ │ ├── sender_ip_mail_provider.go │ │ ├── sender_ip_warmup.go │ │ ├── warmup_daily_upstairs.go │ │ └── warmup_with_campaigns.go │ ├── languages/ │ │ ├── all/ │ │ │ ├── de.json │ │ │ ├── en.json │ │ │ ├── ja.json │ │ │ ├── tr.json │ │ │ └── zh.json │ │ ├── de/ │ │ │ └── server.json │ │ ├── en/ │ │ │ └── server.json │ │ ├── ja/ │ │ │ └── server.json │ │ ├── settings.json │ │ ├── tr/ │ │ │ └── server.json │ │ └── zh/ │ │ └── server.json │ ├── main.go │ ├── manifest/ │ │ ├── deploy/ │ │ │ └── kustomize/ │ │ │ ├── base/ │ │ │ │ ├── deployment.yaml │ │ │ │ ├── kustomization.yaml │ │ │ │ └── service.yaml │ │ │ └── overlays/ │ │ │ └── develop/ │ │ │ ├── configmap.yaml │ │ │ ├── deployment.yaml │ │ │ └── kustomization.yaml │ │ ├── docker/ │ │ │ ├── Dockerfile │ │ │ └── docker.sh │ │ ├── i18n/ │ │ │ └── .gitkeep │ │ └── protobuf/ │ │ └── .keep-if-necessary │ ├── public/ │ │ ├── dist/ │ │ │ ├── index.html │ │ │ └── static/ │ │ │ ├── css/ │ │ │ │ ├── async/ │ │ │ │ │ ├── 1095.b0c2adf5.css │ │ │ │ │ ├── 1565.8f8d53c0.css │ │ │ │ │ ├── 2103.5843b2d6.css │ │ │ │ │ ├── 2364.b852af68.css │ │ │ │ │ ├── 2559.0376b199.css │ │ │ │ │ ├── 3324.7fea3ced.css │ │ │ │ │ ├── 3535.3a6dc340.css │ │ │ │ │ ├── 3635.fafa0516.css │ │ │ │ │ ├── 3643.895949a5.css │ │ │ │ │ ├── 3800.8611c02d.css │ │ │ │ │ ├── 4602.3a6dc340.css │ │ │ │ │ ├── 4904.e7c58895.css │ │ │ │ │ ├── 5410.bfbdc7d0.css │ │ │ │ │ ├── 5779.4e44ff7b.css │ │ │ │ │ ├── 5854.8fdd9416.css │ │ │ │ │ ├── 6463.e30f898f.css │ │ │ │ │ ├── 6969.3a6dc340.css │ │ │ │ │ ├── 7704.98be8394.css │ │ │ │ │ ├── 7907.62c62088.css │ │ │ │ │ ├── 7981.58f07aaf.css │ │ │ │ │ ├── 8013.f0e0f9ae.css │ │ │ │ │ ├── 8441.114b87b8.css │ │ │ │ │ ├── 85.2d8f30c3.css │ │ │ │ │ ├── 8749.468a6685.css │ │ │ │ │ ├── 8813.174c369e.css │ │ │ │ │ ├── 8838.1a1519ba.css │ │ │ │ │ ├── 9207.db2f1c3e.css │ │ │ │ │ ├── 9234.ccfe1ed4.css │ │ │ │ │ ├── 9252.4733345f.css │ │ │ │ │ ├── 9380.c59177f7.css │ │ │ │ │ ├── 9468.3a6dc340.css │ │ │ │ │ ├── 9673.0376b199.css │ │ │ │ │ ├── 9767.02f21d25.css │ │ │ │ │ └── 9926.fd2f892d.css │ │ │ │ └── index.bf8a188f.css │ │ │ ├── js/ │ │ │ │ ├── 7445.eedfb53a.js │ │ │ │ ├── 7445.eedfb53a.js.LICENSE.txt │ │ │ │ ├── async/ │ │ │ │ │ ├── 1069.4c61d773.js │ │ │ │ │ ├── 1095.4072569d.js │ │ │ │ │ ├── 1565.1299bf75.js │ │ │ │ │ ├── 1799.82bcc179.js │ │ │ │ │ ├── 2017.ed71b520.js │ │ │ │ │ ├── 2103.f9529831.js │ │ │ │ │ ├── 2137.31d4654f.js │ │ │ │ │ ├── 2364.90458e25.js │ │ │ │ │ ├── 243.cc15c5a2.js │ │ │ │ │ ├── 2559.56abb865.js │ │ │ │ │ ├── 2564.1229e8c7.js │ │ │ │ │ ├── 2823.47af3d18.js │ │ │ │ │ ├── 2880.9a653202.js │ │ │ │ │ ├── 2890.69346f76.js │ │ │ │ │ ├── 3126.4f62a4e3.js │ │ │ │ │ ├── 3221.496ab585.js │ │ │ │ │ ├── 3324.fd04b5cf.js │ │ │ │ │ ├── 3354.af31be73.js │ │ │ │ │ ├── 3444.11a922bb.js │ │ │ │ │ ├── 3535.b0ca7292.js │ │ │ │ │ ├── 3606.c5bd7813.js │ │ │ │ │ ├── 3635.93c2a49b.js │ │ │ │ │ ├── 3643.85a80c4b.js │ │ │ │ │ ├── 3697.9e630381.js │ │ │ │ │ ├── 3697.9e630381.js.LICENSE.txt │ │ │ │ │ ├── 37.d902cb7a.js │ │ │ │ │ ├── 3800.4a4d937c.js │ │ │ │ │ ├── 424.a8b4d687.js │ │ │ │ │ ├── 424.a8b4d687.js.LICENSE.txt │ │ │ │ │ ├── 4317.78a8cfe0.js │ │ │ │ │ ├── 4485.54eed143.js │ │ │ │ │ ├── 4528.13437601.js │ │ │ │ │ ├── 4602.42684ca4.js │ │ │ │ │ ├── 4636.a6e49596.js │ │ │ │ │ ├── 4904.46e3c77d.js │ │ │ │ │ ├── 5293.1b74ca02.js │ │ │ │ │ ├── 5410.7031af32.js │ │ │ │ │ ├── 5461.31057e0f.js │ │ │ │ │ ├── 5498.56da57d8.js │ │ │ │ │ ├── 5529.b849ba4d.js │ │ │ │ │ ├── 5530.ddd3c262.js │ │ │ │ │ ├── 5701.0a022844.js │ │ │ │ │ ├── 5757.1953a93d.js │ │ │ │ │ ├── 5779.23b65101.js │ │ │ │ │ ├── 579.f4df1ad3.js │ │ │ │ │ ├── 5854.90a82cfb.js │ │ │ │ │ ├── 5867.127e2faf.js │ │ │ │ │ ├── 6061.0e2ac705.js │ │ │ │ │ ├── 6194.9d546878.js │ │ │ │ │ ├── 6366.11e68ac4.js │ │ │ │ │ ├── 6463.9ef25a0c.js │ │ │ │ │ ├── 6646.81304560.js │ │ │ │ │ ├── 6803.12301c63.js │ │ │ │ │ ├── 69.07f369ca.js │ │ │ │ │ ├── 6969.10c6c9cf.js │ │ │ │ │ ├── 7222.4834acb2.js │ │ │ │ │ ├── 7235.c4aee453.js │ │ │ │ │ ├── 7303.1f99ded4.js │ │ │ │ │ ├── 7331.d476ee5b.js │ │ │ │ │ ├── 7704.651d709f.js │ │ │ │ │ ├── 7718.1e6ed6c1.js │ │ │ │ │ ├── 7907.f2482293.js │ │ │ │ │ ├── 7981.51ac0ce2.js │ │ │ │ │ ├── 8013.4cc8e47f.js │ │ │ │ │ ├── 8072.b1d94d7d.js │ │ │ │ │ ├── 8072.b1d94d7d.js.LICENSE.txt │ │ │ │ │ ├── 8128.36b52987.js │ │ │ │ │ ├── 8324.54f4183a.js │ │ │ │ │ ├── 8396.b4461a1b.js │ │ │ │ │ ├── 8441.d03d41cd.js │ │ │ │ │ ├── 85.b5140808.js │ │ │ │ │ ├── 8559.9eb2b019.js │ │ │ │ │ ├── 8634.1021226f.js │ │ │ │ │ ├── 8749.38674ba6.js │ │ │ │ │ ├── 8813.ba11c92d.js │ │ │ │ │ ├── 8838.f2be7192.js │ │ │ │ │ ├── 8943.81a21695.js │ │ │ │ │ ├── 8953.7c602bac.js │ │ │ │ │ ├── 9207.2c09dce2.js │ │ │ │ │ ├── 9234.3eaec856.js │ │ │ │ │ ├── 9252.33108600.js │ │ │ │ │ ├── 9372.19031b29.js │ │ │ │ │ ├── 9380.2af01083.js │ │ │ │ │ ├── 9468.bae2140e.js │ │ │ │ │ ├── 9602.03559ada.js │ │ │ │ │ ├── 9673.f8b256f7.js │ │ │ │ │ ├── 9767.613d0426.js │ │ │ │ │ ├── 9780.7a1639df.js │ │ │ │ │ ├── 9812.a87bb1d1.js │ │ │ │ │ └── 9926.7c24cd6e.js │ │ │ │ ├── index.bc6e5fe9.js │ │ │ │ ├── lib-axios.a492ca1d.js │ │ │ │ ├── lib-router.1d9495fc.js │ │ │ │ ├── lib-router.1d9495fc.js.LICENSE.txt │ │ │ │ ├── lib-vue.1514baec.js │ │ │ │ └── lib-vue.1514baec.js.LICENSE.txt │ │ │ └── plugin/ │ │ │ └── monaco/ │ │ │ ├── base/ │ │ │ │ └── worker/ │ │ │ │ └── workerMain.js │ │ │ ├── basic-languages/ │ │ │ │ ├── abap/ │ │ │ │ │ └── abap.js │ │ │ │ ├── apex/ │ │ │ │ │ └── apex.js │ │ │ │ ├── azcli/ │ │ │ │ │ └── azcli.js │ │ │ │ ├── bat/ │ │ │ │ │ └── bat.js │ │ │ │ ├── bicep/ │ │ │ │ │ └── bicep.js │ │ │ │ ├── cameligo/ │ │ │ │ │ └── cameligo.js │ │ │ │ ├── clojure/ │ │ │ │ │ └── clojure.js │ │ │ │ ├── coffee/ │ │ │ │ │ └── coffee.js │ │ │ │ ├── cpp/ │ │ │ │ │ └── cpp.js │ │ │ │ ├── csharp/ │ │ │ │ │ └── csharp.js │ │ │ │ ├── csp/ │ │ │ │ │ └── csp.js │ │ │ │ ├── css/ │ │ │ │ │ └── css.js │ │ │ │ ├── cypher/ │ │ │ │ │ └── cypher.js │ │ │ │ ├── dart/ │ │ │ │ │ └── dart.js │ │ │ │ ├── dockerfile/ │ │ │ │ │ └── dockerfile.js │ │ │ │ ├── ecl/ │ │ │ │ │ └── ecl.js │ │ │ │ ├── elixir/ │ │ │ │ │ └── elixir.js │ │ │ │ ├── flow9/ │ │ │ │ │ └── flow9.js │ │ │ │ ├── freemarker2/ │ │ │ │ │ └── freemarker2.js │ │ │ │ ├── fsharp/ │ │ │ │ │ └── fsharp.js │ │ │ │ ├── go/ │ │ │ │ │ └── go.js │ │ │ │ ├── graphql/ │ │ │ │ │ └── graphql.js │ │ │ │ ├── handlebars/ │ │ │ │ │ └── handlebars.js │ │ │ │ ├── hcl/ │ │ │ │ │ └── hcl.js │ │ │ │ ├── html/ │ │ │ │ │ └── html.js │ │ │ │ ├── ini/ │ │ │ │ │ └── ini.js │ │ │ │ ├── java/ │ │ │ │ │ └── java.js │ │ │ │ ├── javascript/ │ │ │ │ │ └── javascript.js │ │ │ │ ├── julia/ │ │ │ │ │ └── julia.js │ │ │ │ ├── kotlin/ │ │ │ │ │ └── kotlin.js │ │ │ │ ├── less/ │ │ │ │ │ └── less.js │ │ │ │ ├── lexon/ │ │ │ │ │ └── lexon.js │ │ │ │ ├── liquid/ │ │ │ │ │ └── liquid.js │ │ │ │ ├── lua/ │ │ │ │ │ └── lua.js │ │ │ │ ├── m3/ │ │ │ │ │ └── m3.js │ │ │ │ ├── markdown/ │ │ │ │ │ └── markdown.js │ │ │ │ ├── mdx/ │ │ │ │ │ └── mdx.js │ │ │ │ ├── mips/ │ │ │ │ │ └── mips.js │ │ │ │ ├── msdax/ │ │ │ │ │ └── msdax.js │ │ │ │ ├── mysql/ │ │ │ │ │ └── mysql.js │ │ │ │ ├── objective-c/ │ │ │ │ │ └── objective-c.js │ │ │ │ ├── pascal/ │ │ │ │ │ └── pascal.js │ │ │ │ ├── pascaligo/ │ │ │ │ │ └── pascaligo.js │ │ │ │ ├── perl/ │ │ │ │ │ └── perl.js │ │ │ │ ├── pgsql/ │ │ │ │ │ └── pgsql.js │ │ │ │ ├── php/ │ │ │ │ │ └── php.js │ │ │ │ ├── pla/ │ │ │ │ │ └── pla.js │ │ │ │ ├── postiats/ │ │ │ │ │ └── postiats.js │ │ │ │ ├── powerquery/ │ │ │ │ │ └── powerquery.js │ │ │ │ ├── powershell/ │ │ │ │ │ └── powershell.js │ │ │ │ ├── protobuf/ │ │ │ │ │ └── protobuf.js │ │ │ │ ├── pug/ │ │ │ │ │ └── pug.js │ │ │ │ ├── python/ │ │ │ │ │ └── python.js │ │ │ │ ├── qsharp/ │ │ │ │ │ └── qsharp.js │ │ │ │ ├── r/ │ │ │ │ │ └── r.js │ │ │ │ ├── razor/ │ │ │ │ │ └── razor.js │ │ │ │ ├── redis/ │ │ │ │ │ └── redis.js │ │ │ │ ├── redshift/ │ │ │ │ │ └── redshift.js │ │ │ │ ├── restructuredtext/ │ │ │ │ │ └── restructuredtext.js │ │ │ │ ├── ruby/ │ │ │ │ │ └── ruby.js │ │ │ │ ├── rust/ │ │ │ │ │ └── rust.js │ │ │ │ ├── sb/ │ │ │ │ │ └── sb.js │ │ │ │ ├── scala/ │ │ │ │ │ └── scala.js │ │ │ │ ├── scheme/ │ │ │ │ │ └── scheme.js │ │ │ │ ├── scss/ │ │ │ │ │ └── scss.js │ │ │ │ ├── shell/ │ │ │ │ │ └── shell.js │ │ │ │ ├── solidity/ │ │ │ │ │ └── solidity.js │ │ │ │ ├── sophia/ │ │ │ │ │ └── sophia.js │ │ │ │ ├── sparql/ │ │ │ │ │ └── sparql.js │ │ │ │ ├── sql/ │ │ │ │ │ └── sql.js │ │ │ │ ├── st/ │ │ │ │ │ └── st.js │ │ │ │ ├── swift/ │ │ │ │ │ └── swift.js │ │ │ │ ├── systemverilog/ │ │ │ │ │ └── systemverilog.js │ │ │ │ ├── tcl/ │ │ │ │ │ └── tcl.js │ │ │ │ ├── twig/ │ │ │ │ │ └── twig.js │ │ │ │ ├── typescript/ │ │ │ │ │ └── typescript.js │ │ │ │ ├── typespec/ │ │ │ │ │ └── typespec.js │ │ │ │ ├── vb/ │ │ │ │ │ └── vb.js │ │ │ │ ├── wgsl/ │ │ │ │ │ └── wgsl.js │ │ │ │ ├── xml/ │ │ │ │ │ └── xml.js │ │ │ │ └── yaml/ │ │ │ │ └── yaml.js │ │ │ ├── editor/ │ │ │ │ ├── editor.main.css │ │ │ │ └── editor.main.js │ │ │ ├── language/ │ │ │ │ ├── css/ │ │ │ │ │ ├── cssMode.js │ │ │ │ │ └── cssWorker.js │ │ │ │ ├── html/ │ │ │ │ │ ├── htmlMode.js │ │ │ │ │ └── htmlWorker.js │ │ │ │ ├── json/ │ │ │ │ │ ├── jsonMode.js │ │ │ │ │ └── jsonWorker.js │ │ │ │ └── typescript/ │ │ │ │ ├── tsMode.js │ │ │ │ └── tsWorker.js │ │ │ ├── loader.js │ │ │ ├── nls.messages.de.js │ │ │ ├── nls.messages.es.js │ │ │ ├── nls.messages.fr.js │ │ │ ├── nls.messages.it.js │ │ │ ├── nls.messages.ja.js │ │ │ ├── nls.messages.ko.js │ │ │ ├── nls.messages.ru.js │ │ │ ├── nls.messages.zh-cn.js │ │ │ └── nls.messages.zh-tw.js │ │ └── html/ │ │ ├── .gitkeep │ │ ├── already_subscribed.html │ │ ├── subscribe_confirm.html │ │ ├── subscribe_form.html │ │ ├── subscribe_success.html │ │ ├── unsubscribe.html │ │ ├── unsubscribe_new.html │ │ └── unsubscribe_success.html │ ├── resource/ │ │ ├── public/ │ │ │ ├── html/ │ │ │ │ └── .gitkeep │ │ │ ├── plugin/ │ │ │ │ └── .gitkeep │ │ │ └── resource/ │ │ │ ├── css/ │ │ │ │ └── .gitkeep │ │ │ ├── image/ │ │ │ │ └── .gitkeep │ │ │ └── js/ │ │ │ └── .gitkeep │ │ └── template/ │ │ └── .gitkeep │ ├── run_dev.go │ ├── run_dev.sh │ ├── template/ │ │ ├── .gitkeep │ │ ├── default_confirm_email/ │ │ │ ├── confirm_email.html │ │ │ └── confirm_email.txt │ │ ├── default_unsubscribe_email/ │ │ │ ├── unsubscribe_email.html │ │ │ └── unsubscribe_email.txt │ │ ├── default_welcome_email/ │ │ │ ├── welcome_email.html │ │ │ └── welcome_email.txt │ │ ├── subscribe_form_code.html │ │ ├── subscription_form.html │ │ └── subscription_success.html │ └── utility/ │ ├── .gitkeep │ └── types/ │ └── api_v1/ │ └── common.go ├── data/ │ ├── example_recipients.csv │ └── example_recipients.txt ├── docker-compose.yml ├── env_init ├── init.sql ├── install.sh ├── ssl-self-signed/ │ └── dh.pem └── update.sh