// file generated by src/provider/update.py use crate::provider::Protocol::*; use crate::provider::Socket::*; use crate::provider::UsernamePattern::*; use crate::provider::{Config, ConfigDefault, Oauth2Authorizer, Provider, Server, Status}; use std::collections::HashMap; use once_cell::sync::Lazy; // 163.md: 163.com static P_163: Lazy = Lazy::new(|| { Provider { id: "163", status: Status::Broken, before_login_hint: "163 Mail does not work since it forces the email clients to connect with an IMAP ID, which is currently not the case of Delta Chat.", after_login_hint: "", overview_page: "https://providers.delta.chat/163", server: vec![ ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // aktivix.org.md: aktivix.org static P_AKTIVIX_ORG: Lazy = Lazy::new(|| Provider { id: "aktivix.org", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/aktivix-org", server: vec![ Server { protocol: Imap, socket: Starttls, hostname: "newyear.aktivix.org", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "newyear.aktivix.org", port: 25, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // aol.md: aol.com static P_AOL: Lazy = Lazy::new(|| { Provider { id: "aol", status: Status::Preparation, before_login_hint: "To log in to AOL with Delta Chat, you need to set up an app password in the AOL web interface.", after_login_hint: "", overview_page: "https://providers.delta.chat/aol", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.aol.com", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.aol.com", port: 465, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // arcor.de.md: arcor.de static P_ARCOR_DE: Lazy = Lazy::new(|| Provider { id: "arcor.de", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/arcor-de", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.arcor.de", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "mail.arcor.de", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // autistici.org.md: autistici.org static P_AUTISTICI_ORG: Lazy = Lazy::new(|| Provider { id: "autistici.org", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/autistici-org", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "mail.autistici.org", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.autistici.org", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // blindzeln.org.md: delta.blinzeln.de, delta.blindzeln.org static P_BLINDZELN_ORG: Lazy = Lazy::new(|| Provider { id: "blindzeln.org", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/blindzeln-org", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "webbox222.server-home.org", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "webbox222.server-home.org", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // bluewin.ch.md: bluewin.ch static P_BLUEWIN_CH: Lazy = Lazy::new(|| Provider { id: "bluewin.ch", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/bluewin-ch", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imaps.bluewin.ch", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "smtpauths.bluewin.ch", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // buzon.uy.md: buzon.uy static P_BUZON_UY: Lazy = Lazy::new(|| Provider { id: "buzon.uy", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/buzon-uy", server: vec![ Server { protocol: Imap, socket: Starttls, hostname: "mail.buzon.uy", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "mail.buzon.uy", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // chello.at.md: chello.at static P_CHELLO_AT: Lazy = Lazy::new(|| Provider { id: "chello.at", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/chello-at", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "mail.mymagenta.at", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "mail.mymagenta.at", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // comcast.md: xfinity.com, comcast.net static P_COMCAST: Lazy = Lazy::new(|| Provider { id: "comcast", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/comcast", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // dismail.de.md: dismail.de static P_DISMAIL_DE: Lazy = Lazy::new(|| Provider { id: "dismail.de", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/dismail-de", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // disroot.md: disroot.org static P_DISROOT: Lazy = Lazy::new(|| Provider { id: "disroot", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/disroot", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // dubby.org.md: dubby.org static P_DUBBY_ORG: Lazy = Lazy::new(|| Provider { id: "dubby.org", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/dubby-org", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "dubby.org", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "dubby.org", port: 587, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "dubby.org", port: 465, username_pattern: Email, }, ], config_defaults: Some(vec![ ConfigDefault { key: Config::BccSelf, value: "1", }, ConfigDefault { key: Config::SentboxWatch, value: "0", }, ConfigDefault { key: Config::MvboxMove, value: "0", }, ]), strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // e.email.md: e.email static P_E_EMAIL: Lazy = Lazy::new(|| Provider { id: "e.email", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/e-email", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "mail.ecloud.global", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "mail.ecloud.global", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // espiv.net.md: espiv.net static P_ESPIV_NET: Lazy = Lazy::new(|| Provider { id: "espiv.net", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/espiv-net", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // example.com.md: example.com, example.org, example.net static P_EXAMPLE_COM: Lazy = Lazy::new(|| { Provider { id: "example.com", status: Status::Broken, before_login_hint: "Hush this provider doesn't exist!", after_login_hint: "This provider doesn't really exist, so you can't use it :/ If you need an email provider for Delta Chat, take a look at providers.delta.chat!", overview_page: "https://providers.delta.chat/example-com", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.example.com", port: 1337, username_pattern: Email }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.example.com", port: 1337, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // fastmail.md: fastmail.com static P_FASTMAIL: Lazy = Lazy::new(|| Provider { id: "fastmail", status: Status::Preparation, before_login_hint: "You must create an app-specific password for Delta Chat before you can log in.", after_login_hint: "", overview_page: "https://providers.delta.chat/fastmail", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.fastmail.com", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.fastmail.com", port: 465, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.fastmail.com", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // firemail.de.md: firemail.at, firemail.de static P_FIREMAIL_DE: Lazy = Lazy::new(|| { Provider { id: "firemail.de", status: Status::Preparation, before_login_hint: "Firemail erlaubt nur bei bezahlten Accounts den vollen Zugriff auf das E-Mail-Protokoll. Wenn Sie nicht für Firemail bezahlen, verwenden Sie bitte einen anderen E-Mail-Anbieter.", after_login_hint: "Leider schränkt Firemail die maximale Gruppengröße ein. Je nach Bezahlmodell sind nur 5 bis 30 Gruppenmitglieder erlaubt.", overview_page: "https://providers.delta.chat/firemail-de", server: vec![ ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // five.chat.md: five.chat static P_FIVE_CHAT: Lazy = Lazy::new(|| Provider { id: "five.chat", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/five-chat", server: vec![], config_defaults: Some(vec![ ConfigDefault { key: Config::BccSelf, value: "1", }, ConfigDefault { key: Config::SentboxWatch, value: "0", }, ConfigDefault { key: Config::MvboxMove, value: "0", }, ]), strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // freenet.de.md: freenet.de static P_FREENET_DE: Lazy = Lazy::new(|| { Provider { id: "freenet.de", status: Status::Preparation, before_login_hint: "Um deine freenet.de E-Mail-Adresse mit Delta Chat zu benutzen, musst du erst auf der freenet.de-Webseite \"POP3/IMAP/SMTP\" aktivieren.", after_login_hint: "", overview_page: "https://providers.delta.chat/freenet-de", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "mx.freenet.de", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Starttls, hostname: "mx.freenet.de", port: 587, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // gmail.md: gmail.com, googlemail.com, google.com static P_GMAIL: Lazy = Lazy::new(|| { Provider { id: "gmail", status: Status::Preparation, before_login_hint: "For Gmail accounts, you need to create an app-password if you have \"2-Step Verification\" enabled. If this setting is not available, you need to enable \"less secure apps\".", after_login_hint: "", overview_page: "https://providers.delta.chat/gmail", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.gmail.com", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.gmail.com", port: 465, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: Some(Oauth2Authorizer::Gmail), } }); // gmx.net.md: gmx.net, gmx.de, gmx.at, gmx.ch, gmx.org, gmx.eu, gmx.info, gmx.biz, gmx.com static P_GMX_NET: Lazy = Lazy::new(|| Provider { id: "gmx.net", status: Status::Preparation, before_login_hint: "You must allow IMAP access to your account before you can login.", after_login_hint: "", overview_page: "https://providers.delta.chat/gmx-net", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.gmx.net", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "mail.gmx.net", port: 465, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "mail.gmx.net", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // hermes.radio.md: hermes.radio static P_HERMES_RADIO: Lazy = Lazy::new(|| Provider { id: "hermes.radio", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/hermes-radio", server: vec![], config_defaults: Some(vec![ ConfigDefault { key: Config::MdnsEnabled, value: "0", }, ConfigDefault { key: Config::E2eeEnabled, value: "0", }, ConfigDefault { key: Config::MediaQuality, value: "1", }, ConfigDefault { key: Config::ShowEmails, value: "2", }, ]), strict_tls: false, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // hey.com.md: hey.com static P_HEY_COM: Lazy = Lazy::new(|| { Provider { id: "hey.com", status: Status::Broken, before_login_hint: "hey.com does not offer the standard IMAP e-mail protocol, so you cannot log in with Delta Chat to hey.com.", after_login_hint: "", overview_page: "https://providers.delta.chat/hey-com", server: vec![ ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // i.ua.md: i.ua static P_I_UA: Lazy = Lazy::new(|| Provider { id: "i.ua", status: Status::Broken, before_login_hint: "Протокол IMAP не предоставляется и не планируется.", after_login_hint: "", overview_page: "https://providers.delta.chat/i-ua", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // i3.net.md: i3.net static P_I3_NET: Lazy = Lazy::new(|| Provider { id: "i3.net", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/i3-net", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // icloud.md: icloud.com, me.com, mac.com static P_ICLOUD: Lazy = Lazy::new(|| Provider { id: "icloud", status: Status::Preparation, before_login_hint: "You must create an app-specific password for Delta Chat before login.", after_login_hint: "", overview_page: "https://providers.delta.chat/icloud", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.mail.me.com", port: 993, username_pattern: Emaillocalpart, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.mail.me.com", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // kolst.com.md: kolst.com static P_KOLST_COM: Lazy = Lazy::new(|| Provider { id: "kolst.com", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/kolst-com", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // kontent.com.md: kontent.com static P_KONTENT_COM: Lazy = Lazy::new(|| Provider { id: "kontent.com", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/kontent-com", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // mail.ru.md: mail.ru, inbox.ru, internet.ru, bk.ru, list.ru static P_MAIL_RU: Lazy = Lazy::new(|| { Provider { id: "mail.ru", status: Status::Ok, before_login_hint: "Не рекомендуется использовать mail.ru, потому что он разряжает вашу батарею быстрее, чем другие провайдеры.", after_login_hint: "", overview_page: "https://providers.delta.chat/mail-ru", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.mail.ru", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.mail.ru", port: 465, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // mail2tor.md: mail2tor.com static P_MAIL2TOR: Lazy = Lazy::new(|| Provider { id: "mail2tor", status: Status::Preparation, before_login_hint: "Tor is needed to connect to the email servers.", after_login_hint: "", overview_page: "https://providers.delta.chat/mail2tor", server: vec![ Server { protocol: Imap, socket: Plain, hostname: "g77kjrad6bafzzyldqvffq6kxlsgphcygptxhnn4xlnktfgaqshilmyd.onion", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Plain, hostname: "xc7tgk2c5onxni2wsy76jslfsitxjbbptejnqhw6gy2ft7khpevhc7ad.onion", port: 25, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // mailbox.org.md: mailbox.org, secure.mailbox.org static P_MAILBOX_ORG: Lazy = Lazy::new(|| Provider { id: "mailbox.org", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/mailbox-org", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // mailo.com.md: mailo.com static P_MAILO_COM: Lazy = Lazy::new(|| Provider { id: "mailo.com", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/mailo-com", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.mailo.com", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.mailo.com", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // nauta.cu.md: nauta.cu static P_NAUTA_CU: Lazy = Lazy::new(|| Provider { id: "nauta.cu", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/nauta-cu", server: vec![ Server { protocol: Imap, socket: Starttls, hostname: "imap.nauta.cu", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.nauta.cu", port: 25, username_pattern: Email, }, ], config_defaults: Some(vec![ ConfigDefault { key: Config::DeleteServerAfter, value: "1", }, ConfigDefault { key: Config::BccSelf, value: "0", }, ConfigDefault { key: Config::SentboxWatch, value: "0", }, ConfigDefault { key: Config::MvboxMove, value: "0", }, ConfigDefault { key: Config::E2eeEnabled, value: "0", }, ConfigDefault { key: Config::MediaQuality, value: "1", }, ConfigDefault { key: Config::FetchExistingMsgs, value: "0", }, ]), strict_tls: false, max_smtp_rcpt_to: Some(20), oauth2_authorizer: None, }); // naver.md: naver.com static P_NAVER: Lazy = Lazy::new(|| Provider { id: "naver", status: Status::Preparation, before_login_hint: "Manually enabling IMAP/SMTP is required.", after_login_hint: "", overview_page: "https://providers.delta.chat/naver", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.naver.com", port: 993, username_pattern: Emaillocalpart, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.naver.com", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // outlook.com.md: hotmail.com, outlook.com, office365.com, outlook.com.tr, live.com static P_OUTLOOK_COM: Lazy = Lazy::new(|| Provider { id: "outlook.com", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/outlook-com", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "outlook.office365.com", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.office365.com", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // posteo.md: posteo.de, posteo.af, posteo.at, posteo.be, posteo.ch, posteo.cl, posteo.co, posteo.co.uk, posteo.com.br, posteo.cr, posteo.cz, posteo.dk, posteo.ee, posteo.es, posteo.eu, posteo.fi, posteo.gl, posteo.gr, posteo.hn, posteo.hr, posteo.hu, posteo.ie, posteo.in, posteo.is, posteo.it, posteo.jp, posteo.la, posteo.li, posteo.lt, posteo.lu, posteo.me, posteo.mx, posteo.my, posteo.net, posteo.nl, posteo.no, posteo.nz, posteo.org, posteo.pe, posteo.pl, posteo.pm, posteo.pt, posteo.ro, posteo.ru, posteo.se, posteo.sg, posteo.si, posteo.tn, posteo.uk, posteo.us static P_POSTEO: Lazy = Lazy::new(|| Provider { id: "posteo", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/posteo", server: vec![ Server { protocol: Imap, socket: Starttls, hostname: "posteo.de", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "posteo.de", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // protonmail.md: protonmail.com, protonmail.ch static P_PROTONMAIL: Lazy = Lazy::new(|| { Provider { id: "protonmail", status: Status::Broken, before_login_hint: "Protonmail does not offer the standard IMAP e-mail protocol, so you cannot log in with Delta Chat to Protonmail.", after_login_hint: "To use Delta Chat with Protonmail, the IMAP bridge must be running in the background. If you have connectivity issues, double check whether it works as expected.", overview_page: "https://providers.delta.chat/protonmail", server: vec![ ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // qq.md: qq.com, foxmail.com static P_QQ: Lazy = Lazy::new(|| { Provider { id: "qq", status: Status::Preparation, before_login_hint: "Manually enabling IMAP/SMTP and creating an app-specific password for Delta Chat are required.", after_login_hint: "", overview_page: "https://providers.delta.chat/qq", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.qq.com", port: 993, username_pattern: Emaillocalpart }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.qq.com", port: 465, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // riseup.net.md: riseup.net static P_RISEUP_NET: Lazy = Lazy::new(|| Provider { id: "riseup.net", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/riseup-net", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // rogers.com.md: rogers.com static P_ROGERS_COM: Lazy = Lazy::new(|| Provider { id: "rogers.com", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/rogers-com", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // systemausfall.org.md: systemausfall.org, solidaris.me static P_SYSTEMAUSFALL_ORG: Lazy = Lazy::new(|| Provider { id: "systemausfall.org", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/systemausfall-org", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "mail.systemausfall.org", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "mail.systemausfall.org", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // systemli.org.md: systemli.org static P_SYSTEMLI_ORG: Lazy = Lazy::new(|| Provider { id: "systemli.org", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/systemli-org", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // t-online.md: t-online.de, magenta.de static P_T_ONLINE: Lazy = Lazy::new(|| { Provider { id: "t-online", status: Status::Preparation, before_login_hint: "To use Delta Chat with a T-Online email address, you need to create an app password in the web interface.", after_login_hint: "", overview_page: "https://providers.delta.chat/t-online", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "secureimap.t-online.de", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "securesmtp.t-online.de", port: 465, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // testrun.md: testrun.org static P_TESTRUN: Lazy = Lazy::new(|| Provider { id: "testrun", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/testrun", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "testrun.org", port: 993, username_pattern: Email, }, Server { protocol: Imap, socket: Starttls, hostname: "testrun.org", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "testrun.org", port: 587, username_pattern: Email, }, ], config_defaults: Some(vec![ ConfigDefault { key: Config::BccSelf, value: "1", }, ConfigDefault { key: Config::SentboxWatch, value: "0", }, ConfigDefault { key: Config::MvboxMove, value: "0", }, ]), strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // tiscali.it.md: tiscali.it static P_TISCALI_IT: Lazy = Lazy::new(|| Provider { id: "tiscali.it", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/tiscali-it", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.tiscali.it", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.tiscali.it", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // tutanota.md: tutanota.com, tutanota.de, tutamail.com, tuta.io, keemail.me static P_TUTANOTA: Lazy = Lazy::new(|| { Provider { id: "tutanota", status: Status::Broken, before_login_hint: "Tutanota does not offer the standard IMAP e-mail protocol, so you cannot log in with Delta Chat to Tutanota.", after_login_hint: "", overview_page: "https://providers.delta.chat/tutanota", server: vec![ ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // ukr.net.md: ukr.net static P_UKR_NET: Lazy = Lazy::new(|| Provider { id: "ukr.net", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/ukr-net", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // undernet.uy.md: undernet.uy static P_UNDERNET_UY: Lazy = Lazy::new(|| Provider { id: "undernet.uy", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/undernet-uy", server: vec![ Server { protocol: Imap, socket: Starttls, hostname: "undernet.uy", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "undernet.uy", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // vfemail.md: vfemail.net static P_VFEMAIL: Lazy = Lazy::new(|| Provider { id: "vfemail", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/vfemail", server: vec![], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // vivaldi.md: vivaldi.net static P_VIVALDI: Lazy = Lazy::new(|| Provider { id: "vivaldi", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/vivaldi", server: vec![ Server { protocol: Imap, socket: Starttls, hostname: "imap.vivaldi.net", port: 143, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.vivaldi.net", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // vodafone.de.md: vodafone.de, vodafonemail.de static P_VODAFONE_DE: Lazy = Lazy::new(|| Provider { id: "vodafone.de", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/vodafone-de", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.vodafonemail.de", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.vodafonemail.de", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // web.de.md: web.de, email.de, flirt.ms, hallo.ms, kuss.ms, love.ms, magic.ms, singles.ms, cool.ms, kanzler.ms, okay.ms, party.ms, pop.ms, stars.ms, techno.ms, clever.ms, deutschland.ms, genial.ms, ich.ms, online.ms, smart.ms, wichtig.ms, action.ms, fussball.ms, joker.ms, planet.ms, power.ms static P_WEB_DE: Lazy = Lazy::new(|| { Provider { id: "web.de", status: Status::Preparation, before_login_hint: "You must allow IMAP access to your account before you can login.", after_login_hint: "Note: if you have your web.de spam settings too strict, you won't receive contact requests from new people. If you want to receive contact requests, you should disable the \"3-Wege-Spamschutz\" in the web.de settings. Read how: https://hilfe.web.de/email/spam-und-viren/spamschutz-einstellungen.html", overview_page: "https://providers.delta.chat/web-de", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.web.de", port: 993, username_pattern: Emaillocalpart }, Server { protocol: Imap, socket: Starttls, hostname: "imap.web.de", port: 143, username_pattern: Emaillocalpart }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.web.de", port: 587, username_pattern: Emaillocalpart }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // yahoo.md: yahoo.com, yahoo.de, yahoo.it, yahoo.fr, yahoo.es, yahoo.se, yahoo.co.uk, yahoo.co.nz, yahoo.com.au, yahoo.com.ar, yahoo.com.br, yahoo.com.mx, ymail.com, rocketmail.com, yahoodns.net static P_YAHOO: Lazy = Lazy::new(|| { Provider { id: "yahoo", status: Status::Preparation, before_login_hint: "To use Delta Chat with your Yahoo email address you have to create an \"App-Password\" in the account security screen.", after_login_hint: "", overview_page: "https://providers.delta.chat/yahoo", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.mail.yahoo.com", port: 993, username_pattern: Email }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.mail.yahoo.com", port: 465, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // yandex.ru.md: yandex.com, yandex.by, yandex.kz, yandex.ru, yandex.ua, ya.ru, narod.ru static P_YANDEX_RU: Lazy = Lazy::new(|| Provider { id: "yandex.ru", status: Status::Preparation, before_login_hint: "For Yandex accounts, you have to set IMAP protocol option turned on.", after_login_hint: "", overview_page: "https://providers.delta.chat/yandex-ru", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.yandex.com", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.yandex.com", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: Some(Oauth2Authorizer::Yandex), }); // yggmail.md: yggmail static P_YGGMAIL: Lazy = Lazy::new(|| { Provider { id: "yggmail", status: Status::Preparation, before_login_hint: "An Yggmail companion app needs to be installed on your device to access the Yggmail network.", after_login_hint: "Make sure, the Yggmail companion app runs whenever you want to use this account. Note, that you usually cannot write from @yggmail addresses to normal e-mail-addresses (as @gmx.net). However, you can create another account in the normal e-mail-network for this purpose.", overview_page: "https://providers.delta.chat/yggmail", server: vec![ Server { protocol: Imap, socket: Plain, hostname: "localhost", port: 1143, username_pattern: Email }, Server { protocol: Smtp, socket: Plain, hostname: "localhost", port: 1025, username_pattern: Email }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, } }); // ziggo.nl.md: ziggo.nl static P_ZIGGO_NL: Lazy = Lazy::new(|| Provider { id: "ziggo.nl", status: Status::Ok, before_login_hint: "", after_login_hint: "", overview_page: "https://providers.delta.chat/ziggo-nl", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.ziggo.nl", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Starttls, hostname: "smtp.ziggo.nl", port: 587, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); // zoho.md: zohomail.eu, zohomail.com, zoho.com static P_ZOHO: Lazy = Lazy::new(|| Provider { id: "zoho", status: Status::Preparation, before_login_hint: "To use Zoho Mail, you have to turn on IMAP in the Zoho Mail backend.", after_login_hint: "", overview_page: "https://providers.delta.chat/zoho", server: vec![ Server { protocol: Imap, socket: Ssl, hostname: "imap.zoho.eu", port: 993, username_pattern: Email, }, Server { protocol: Smtp, socket: Ssl, hostname: "smtp.zoho.eu", port: 465, username_pattern: Email, }, ], config_defaults: None, strict_tls: true, max_smtp_rcpt_to: None, oauth2_authorizer: None, }); pub(crate) static PROVIDER_DATA: Lazy> = Lazy::new(|| { [ ("163.com", &*P_163), ("aktivix.org", &*P_AKTIVIX_ORG), ("aol.com", &*P_AOL), ("arcor.de", &*P_ARCOR_DE), ("autistici.org", &*P_AUTISTICI_ORG), ("delta.blinzeln.de", &*P_BLINDZELN_ORG), ("delta.blindzeln.org", &*P_BLINDZELN_ORG), ("bluewin.ch", &*P_BLUEWIN_CH), ("buzon.uy", &*P_BUZON_UY), ("chello.at", &*P_CHELLO_AT), ("xfinity.com", &*P_COMCAST), ("comcast.net", &*P_COMCAST), ("dismail.de", &*P_DISMAIL_DE), ("disroot.org", &*P_DISROOT), ("dubby.org", &*P_DUBBY_ORG), ("e.email", &*P_E_EMAIL), ("espiv.net", &*P_ESPIV_NET), ("example.com", &*P_EXAMPLE_COM), ("example.org", &*P_EXAMPLE_COM), ("example.net", &*P_EXAMPLE_COM), ("fastmail.com", &*P_FASTMAIL), ("firemail.at", &*P_FIREMAIL_DE), ("firemail.de", &*P_FIREMAIL_DE), ("five.chat", &*P_FIVE_CHAT), ("freenet.de", &*P_FREENET_DE), ("gmail.com", &*P_GMAIL), ("googlemail.com", &*P_GMAIL), ("google.com", &*P_GMAIL), ("gmx.net", &*P_GMX_NET), ("gmx.de", &*P_GMX_NET), ("gmx.at", &*P_GMX_NET), ("gmx.ch", &*P_GMX_NET), ("gmx.org", &*P_GMX_NET), ("gmx.eu", &*P_GMX_NET), ("gmx.info", &*P_GMX_NET), ("gmx.biz", &*P_GMX_NET), ("gmx.com", &*P_GMX_NET), ("hermes.radio", &*P_HERMES_RADIO), ("hey.com", &*P_HEY_COM), ("i.ua", &*P_I_UA), ("i3.net", &*P_I3_NET), ("icloud.com", &*P_ICLOUD), ("me.com", &*P_ICLOUD), ("mac.com", &*P_ICLOUD), ("kolst.com", &*P_KOLST_COM), ("kontent.com", &*P_KONTENT_COM), ("mail.ru", &*P_MAIL_RU), ("inbox.ru", &*P_MAIL_RU), ("internet.ru", &*P_MAIL_RU), ("bk.ru", &*P_MAIL_RU), ("list.ru", &*P_MAIL_RU), ("mail2tor.com", &*P_MAIL2TOR), ("mailbox.org", &*P_MAILBOX_ORG), ("secure.mailbox.org", &*P_MAILBOX_ORG), ("mailo.com", &*P_MAILO_COM), ("nauta.cu", &*P_NAUTA_CU), ("naver.com", &*P_NAVER), ("hotmail.com", &*P_OUTLOOK_COM), ("outlook.com", &*P_OUTLOOK_COM), ("office365.com", &*P_OUTLOOK_COM), ("outlook.com.tr", &*P_OUTLOOK_COM), ("live.com", &*P_OUTLOOK_COM), ("posteo.de", &*P_POSTEO), ("posteo.af", &*P_POSTEO), ("posteo.at", &*P_POSTEO), ("posteo.be", &*P_POSTEO), ("posteo.ch", &*P_POSTEO), ("posteo.cl", &*P_POSTEO), ("posteo.co", &*P_POSTEO), ("posteo.co.uk", &*P_POSTEO), ("posteo.com.br", &*P_POSTEO), ("posteo.cr", &*P_POSTEO), ("posteo.cz", &*P_POSTEO), ("posteo.dk", &*P_POSTEO), ("posteo.ee", &*P_POSTEO), ("posteo.es", &*P_POSTEO), ("posteo.eu", &*P_POSTEO), ("posteo.fi", &*P_POSTEO), ("posteo.gl", &*P_POSTEO), ("posteo.gr", &*P_POSTEO), ("posteo.hn", &*P_POSTEO), ("posteo.hr", &*P_POSTEO), ("posteo.hu", &*P_POSTEO), ("posteo.ie", &*P_POSTEO), ("posteo.in", &*P_POSTEO), ("posteo.is", &*P_POSTEO), ("posteo.it", &*P_POSTEO), ("posteo.jp", &*P_POSTEO), ("posteo.la", &*P_POSTEO), ("posteo.li", &*P_POSTEO), ("posteo.lt", &*P_POSTEO), ("posteo.lu", &*P_POSTEO), ("posteo.me", &*P_POSTEO), ("posteo.mx", &*P_POSTEO), ("posteo.my", &*P_POSTEO), ("posteo.net", &*P_POSTEO), ("posteo.nl", &*P_POSTEO), ("posteo.no", &*P_POSTEO), ("posteo.nz", &*P_POSTEO), ("posteo.org", &*P_POSTEO), ("posteo.pe", &*P_POSTEO), ("posteo.pl", &*P_POSTEO), ("posteo.pm", &*P_POSTEO), ("posteo.pt", &*P_POSTEO), ("posteo.ro", &*P_POSTEO), ("posteo.ru", &*P_POSTEO), ("posteo.se", &*P_POSTEO), ("posteo.sg", &*P_POSTEO), ("posteo.si", &*P_POSTEO), ("posteo.tn", &*P_POSTEO), ("posteo.uk", &*P_POSTEO), ("posteo.us", &*P_POSTEO), ("protonmail.com", &*P_PROTONMAIL), ("protonmail.ch", &*P_PROTONMAIL), ("qq.com", &*P_QQ), ("foxmail.com", &*P_QQ), ("riseup.net", &*P_RISEUP_NET), ("rogers.com", &*P_ROGERS_COM), ("systemausfall.org", &*P_SYSTEMAUSFALL_ORG), ("solidaris.me", &*P_SYSTEMAUSFALL_ORG), ("systemli.org", &*P_SYSTEMLI_ORG), ("t-online.de", &*P_T_ONLINE), ("magenta.de", &*P_T_ONLINE), ("testrun.org", &*P_TESTRUN), ("tiscali.it", &*P_TISCALI_IT), ("tutanota.com", &*P_TUTANOTA), ("tutanota.de", &*P_TUTANOTA), ("tutamail.com", &*P_TUTANOTA), ("tuta.io", &*P_TUTANOTA), ("keemail.me", &*P_TUTANOTA), ("ukr.net", &*P_UKR_NET), ("undernet.uy", &*P_UNDERNET_UY), ("vfemail.net", &*P_VFEMAIL), ("vivaldi.net", &*P_VIVALDI), ("vodafone.de", &*P_VODAFONE_DE), ("vodafonemail.de", &*P_VODAFONE_DE), ("web.de", &*P_WEB_DE), ("email.de", &*P_WEB_DE), ("flirt.ms", &*P_WEB_DE), ("hallo.ms", &*P_WEB_DE), ("kuss.ms", &*P_WEB_DE), ("love.ms", &*P_WEB_DE), ("magic.ms", &*P_WEB_DE), ("singles.ms", &*P_WEB_DE), ("cool.ms", &*P_WEB_DE), ("kanzler.ms", &*P_WEB_DE), ("okay.ms", &*P_WEB_DE), ("party.ms", &*P_WEB_DE), ("pop.ms", &*P_WEB_DE), ("stars.ms", &*P_WEB_DE), ("techno.ms", &*P_WEB_DE), ("clever.ms", &*P_WEB_DE), ("deutschland.ms", &*P_WEB_DE), ("genial.ms", &*P_WEB_DE), ("ich.ms", &*P_WEB_DE), ("online.ms", &*P_WEB_DE), ("smart.ms", &*P_WEB_DE), ("wichtig.ms", &*P_WEB_DE), ("action.ms", &*P_WEB_DE), ("fussball.ms", &*P_WEB_DE), ("joker.ms", &*P_WEB_DE), ("planet.ms", &*P_WEB_DE), ("power.ms", &*P_WEB_DE), ("yahoo.com", &*P_YAHOO), ("yahoo.de", &*P_YAHOO), ("yahoo.it", &*P_YAHOO), ("yahoo.fr", &*P_YAHOO), ("yahoo.es", &*P_YAHOO), ("yahoo.se", &*P_YAHOO), ("yahoo.co.uk", &*P_YAHOO), ("yahoo.co.nz", &*P_YAHOO), ("yahoo.com.au", &*P_YAHOO), ("yahoo.com.ar", &*P_YAHOO), ("yahoo.com.br", &*P_YAHOO), ("yahoo.com.mx", &*P_YAHOO), ("ymail.com", &*P_YAHOO), ("rocketmail.com", &*P_YAHOO), ("yahoodns.net", &*P_YAHOO), ("yandex.com", &*P_YANDEX_RU), ("yandex.by", &*P_YANDEX_RU), ("yandex.kz", &*P_YANDEX_RU), ("yandex.ru", &*P_YANDEX_RU), ("yandex.ua", &*P_YANDEX_RU), ("ya.ru", &*P_YANDEX_RU), ("narod.ru", &*P_YANDEX_RU), ("yggmail", &*P_YGGMAIL), ("ziggo.nl", &*P_ZIGGO_NL), ("zohomail.eu", &*P_ZOHO), ("zohomail.com", &*P_ZOHO), ("zoho.com", &*P_ZOHO), ] .iter() .copied() .collect() }); pub(crate) static PROVIDER_IDS: Lazy> = Lazy::new(|| { [ ("163", &*P_163), ("aktivix.org", &*P_AKTIVIX_ORG), ("aol", &*P_AOL), ("arcor.de", &*P_ARCOR_DE), ("autistici.org", &*P_AUTISTICI_ORG), ("blindzeln.org", &*P_BLINDZELN_ORG), ("bluewin.ch", &*P_BLUEWIN_CH), ("buzon.uy", &*P_BUZON_UY), ("chello.at", &*P_CHELLO_AT), ("comcast", &*P_COMCAST), ("dismail.de", &*P_DISMAIL_DE), ("disroot", &*P_DISROOT), ("dubby.org", &*P_DUBBY_ORG), ("e.email", &*P_E_EMAIL), ("espiv.net", &*P_ESPIV_NET), ("example.com", &*P_EXAMPLE_COM), ("fastmail", &*P_FASTMAIL), ("firemail.de", &*P_FIREMAIL_DE), ("five.chat", &*P_FIVE_CHAT), ("freenet.de", &*P_FREENET_DE), ("gmail", &*P_GMAIL), ("gmx.net", &*P_GMX_NET), ("hermes.radio", &*P_HERMES_RADIO), ("hey.com", &*P_HEY_COM), ("i.ua", &*P_I_UA), ("i3.net", &*P_I3_NET), ("icloud", &*P_ICLOUD), ("kolst.com", &*P_KOLST_COM), ("kontent.com", &*P_KONTENT_COM), ("mail.ru", &*P_MAIL_RU), ("mail2tor", &*P_MAIL2TOR), ("mailbox.org", &*P_MAILBOX_ORG), ("mailo.com", &*P_MAILO_COM), ("nauta.cu", &*P_NAUTA_CU), ("naver", &*P_NAVER), ("outlook.com", &*P_OUTLOOK_COM), ("posteo", &*P_POSTEO), ("protonmail", &*P_PROTONMAIL), ("qq", &*P_QQ), ("riseup.net", &*P_RISEUP_NET), ("rogers.com", &*P_ROGERS_COM), ("systemausfall.org", &*P_SYSTEMAUSFALL_ORG), ("systemli.org", &*P_SYSTEMLI_ORG), ("t-online", &*P_T_ONLINE), ("testrun", &*P_TESTRUN), ("tiscali.it", &*P_TISCALI_IT), ("tutanota", &*P_TUTANOTA), ("ukr.net", &*P_UKR_NET), ("undernet.uy", &*P_UNDERNET_UY), ("vfemail", &*P_VFEMAIL), ("vivaldi", &*P_VIVALDI), ("vodafone.de", &*P_VODAFONE_DE), ("web.de", &*P_WEB_DE), ("yahoo", &*P_YAHOO), ("yandex.ru", &*P_YANDEX_RU), ("yggmail", &*P_YGGMAIL), ("ziggo.nl", &*P_ZIGGO_NL), ("zoho", &*P_ZOHO), ] .iter() .copied() .collect() }); pub static PROVIDER_UPDATED: Lazy = Lazy::new(|| chrono::NaiveDate::from_ymd(2021, 9, 29));