This is an extended version of the addon "Confirm Mail". You can define "exceptions" for confirmation.
You can define "exceptions" and "extra conditions" for confirmation of message sending operation. Some features depend on the native messaging host, please download/install it from the latest release page for 3.x and later (4.0.2 for example).
This has an intelligent reconfirmation mode: *reconfirms only on cases with higher risk of miss-sending *, for example; there are added recipients, message body is copied from another existing message sent to different recipients, very long text is copied from external application, and so on. Moreover this has ability to show more reconfirmations with various conditions.
And, this has a "delayed send" feature also, like "send after 5 seconds after confirmation". This will give you one more chance to cancel sending.
If you put some domains to the "exceptional domains" list and you try to send a mail to an address in the list, an extra confirmation dialog will be shown. It will be useful in a case like: your SMTP server always encrypts your mail automatically but there are some exceptions.
If you put some "file extension"s to the "exceptional attachment suffixes" list and you try to send a mail with an attachment including a suffix in the list, an extra confirmation dialog will be shown. It will be useful in a case like: your SMTP server always encrypts attachments but there are some exception file types.
If you put some notifiable keywords to the "exceptional attachment names" list and you try to send a mail with an attachment including a term in the list, an extra confirmation dialog will be shown. It will be useful in a case like: your company has a policy to use special terms like "confidential" for some special attachemnt files.
If you put some dangerous domains to the "blocked domains" list and you try to send a mail with an attachment including a term in the list, the operation will be canceled always. It will be useful in a case like: your company maintains a list of dangerous recipient domains.
This addon supports Managed Storage.
You can override any configs via GPO, policies.json
and/or managed storage manifest.
For example, if you use the policies.json
:
{
"policies": {
"3rdparty": {
"Extensions": {
"flexible-confirm-mail@clear-code.com": {
"internalDomains": [
"clear-code.com"
],
"skipConfirmationForInternalMail": true
}
}
}
}
}
It will help you to create such an managed storage manifest with exported configs: FlexConfirmMail options => "Development" => Check "Debug mode" => "All Configs" => "Export".
(Please remind that you should remove "debug":true
from the managed manifest.)
- Install Node.js including npm to your local machine.
- Clone this repository to your local machine.
- In the cloned repository directory, run
cd webextensions && npm install
to insatll dependencies. 4, In the cloned repository, runmake unittest
.
- Download "Assets" from any CI result's artifacts.
- Extract XPI and native messaging host from the downloaded Assets.
- Run
install.bat
to Install native messaging host extracted at the step 2, if it is not installed. - Start Thunderbird.
- Open the Add-ons Manager.
- Drag downloaded XPI file and drop it to the Add-ons Manager.
- Accept installation of the new FlexConfirmMail.
- Open
sample.eml
with Thunderbird. - Hit Ctrl-E to edit the mail as a new message.
- Try to send it.
Prepare Windows 10 + WSL and macOS environments. On Windows:
- Install and setup Golang on your Linux environment.
- On Ubuntu 22.04LTS: you may just run
sudo apt install golang-go gox gcc-aarch64-linux-gnu
- On Ubuntu 22.04LTS: you may just run
- Install go-msi https://github.com/mh-cbon/go-msi via an MSI to your Windows environment.
- Install WiX Toolset https://wixtoolset.org/releases/ to your Windows environment.
- Set PATH to go-msi (ex.
C:\Program Files\go-msi
) and WiX Toolset (ex.C:\Program Files (x86)\WiX Toolset v3.11\bin
). - Run
make host
. Then.exe
files and a batch file to build MSI will be generated. - Double-click the generated
webextensions\native-messaging-host\build_msi.bat
on your Windows environment. Then two MSIs will be generated.
And, on macOS:
- If you need to distribute notarized pkg, prepare these things:
- Install XCode. (You may need to update the macOS before that.)
- Create your personal Apple ID (assume it is
myname@example.com
) and join to the Apple Developer Program. (*Payment required) - Create an application password named as
Pkg Signing
. Assume that the generated password. - Create a cerficate signing request.
- Open "Keychain Access (キーチェーンアクセス)": "Finder" => "Application (アプリケーション)" => "Utilities (ユーティリティ)" => "Keychain Access (キーチェーンアクセス)"
- In the menubar: "Keychain Access (キーチェーンアクセス)" => "Certificate Assistant (証明書アシスタント)" => "Request a Certificate From a Certificate Authority (認証局に証明書を要求)"
- Fill fields with your Apple ID (email addressm) and your company name (assume it is
My Company
). The email field of the CA can be blank. - Click "Save to Disk (ディスクに保存)" and "Continue (続ける)".
- A file named as
CertificateSigningRequest.certSign
will be saved. Store it somewhere.
- Create a certificate for code signing.
- Go to the Apple Developer Portal and transit to the Certificates, IDs, & Profiles.
- Click
Create a certificate
. - Choose
Developer ID Application - This certificate is used to code sign your app for distribution outside of the Mac App Store.
and clickContinue
. - Choose
Previous Sub-CA
. - Click
Choose File
, chooseCertificateSigningRequest.certSign
you've created and clickContinue
. - Click
Download Your Certificate
to download the certificate filedeveloperID_application.cer
. - Double-click downloaded
developerID_application.cer
to import it to the Keychain Access. - In a terminal, run
security find-identity -v | grep -E -o '(Developer ID Application:[^"]+")
to get the certificate name. Assume that it isDeveloper ID Application: My Company (XXXXXXXXXXX)
. The part "XXXXXXXXXX" is your team ID.
- Create a certificate for signing to installer packages.
- Go to the Certificates, IDs, & Profiles again.
- Click
Create a certificate
. - Choose
Developer ID Installer - This certificate is used to sign your app's Installer Package for distribution outside of the Mac App Store.
and clickContinue
. - Choose
Previous Sub-CA
. - Click
Choose File
, chooseCertificateSigningRequest.certSign
you've created and clickContinue
. - Click
Download Your Certificate
to download the certificate filedeveloperID_installer.cer
. - Double-click downloaded
developerID_installer.cer
to import it to the Keychain Access. - In a terminal, run
security find-identity -v | grep -E -o '(Developer ID Installer:[^"]+")
to get the certificate name. Assume that it isDeveloper ID Installer: My Company (XXXXXXXXXXX)
.
- Configure your shell (with
~/.bashrc
or~/.zshrc
) as:export APPLE_ID="myname@example.com" export APP_CERT_NAME="Developer ID Application: My Company (XXXXXXXXXXX)" export PKG_CERT_NAME="Developer ID Installer: My Company (XXXXXXXXXXX)"
- Copy built
darwin
directory to the local storage of your macOS environment. - Open a terminal window.
cd
to the copieddarwin
directory.- Run
build_pkg.sh
. Then a.pkg
file will be generated.- You'll see some authentication dialogs to access the Keychain Access or login as
Pkg Signing
, if you preparedAPPLE_ID
,APP_CERT_NAME
andPKG_CERT_NAME
as described above and you ran thebuild_pkg.sh
on a macOS desktop environment. The built file.signed.pkg
is notarized, so you should distribute it instead of the unsigned version.
- You'll see some authentication dialogs to access the Keychain Access or login as