rewrite underway
This commit is contained in:
24 files changed
+324
-533
No files matched your search
+3
-7
@@ -1,10 +1,6 @@
|
|||||||
|
personal.muttrc
|
||||||
*.swp
|
*.swp
|
||||||
*.gpg
|
*.gpg
|
||||||
accounts/
|
|
||||||
*.pyc
|
*.pyc
|
||||||
personal.muttrc
|
accounts/
|
||||||
thunderbird/
|
*mailsynclastrun
|
||||||
autoconf/log
|
|
||||||
etc/mailsynclastrun
|
|
||||||
etc/.mailsynclastrun
|
|
||||||
.dl
|
|
||||||
@@ -1,138 +1,59 @@
|
|||||||
# Luke's mutt Wizard for automatic Neomutt and OfflineIMAP configuration!
|
# mutt-wizard
|
||||||
|
|
||||||

|
The mutt-wizard is a simple `dialog`-based interface gives you:
|
||||||
|
|
||||||
Mutt is one of the most rewarding programs one can use, but can be a pain in
|
- a fully-functioning neomutt-based terminal email workflow with vim bindings, vibrant display.
|
||||||
the ass to configure. Since my job is making power-user tools available for the
|
- email backed up offline with offlineIMAP, allowing mobile and offline access of all your mail.
|
||||||
masses I want to create a tool that automates most of mutt configuration so
|
- automatically generated shortcuts for jumping between different accounts or mailboxes within an account.
|
||||||
that users can simply give their email address and get a /comfy/ setup. At
|
- sensible binds that make managing, moving and reading mail quicker and easier than ever.
|
||||||
that, I don't just want a mutt wizard, but an offlineIMAP wizard, so users can
|
- your passwords safely encrypted on your machine so you (and only you) can access your account easily (uses GPG).
|
||||||
easily access their mail offline as well, and a wizard that makes it easy to
|
|
||||||
store passwords securely using gpg.
|
|
||||||
|
|
||||||
The mutt-wizard is all of this in a simple ncurses menu. It's really just a
|
I maintain mutt-wizard for GNU/Linux, but individual contributors have also made it compatible with Mac.
|
||||||
little bash script, but one that can save countless people thousands of
|
|
||||||
combined manhours of frustratingly trying to get all the moving pieces working
|
|
||||||
together.
|
|
||||||
|
|
||||||
## User interface
|
## Use mutt-wizard
|
||||||
|
|
||||||
The system takes an email and autodetect its server settings, generating a
|
Clone the repo to `~/.config/mutt`. Either move to backup or delete your old `~/.config/mutt` directory if you have one. Remove/backup your old offlineimap and msmtp configs if you have them as well.
|
||||||
muttrc and offlineimaprc profile automatically. If it can't do so, it simply
|
|
||||||
prompts you for these (which you can easily look up) and will put them all in
|
|
||||||
the right places. You get:
|
|
||||||
|
|
||||||
+ Automatic configuration of mutt and offlineimap.
|
Be sure to install the following programs:
|
||||||
+ Automatic encryption and safe storage of passwords which are used by mutt and
|
|
||||||
offlineimap when necessary.
|
|
||||||
+ Multiple account management in mutt: jump from account to account with the
|
|
||||||
`i` prefix in mutt: `i1`: first email account, `i5`: fifth, etc.
|
|
||||||
+ Easy movement to mail folders in mutt: `gi`: go to inbox, `gs` to sent mail,
|
|
||||||
`ga` to archive, `gS` to spam, `gd` to drafts, etc.
|
|
||||||
+ Some default controls and colors. This system is going to be integrated into
|
|
||||||
my [public auto-rice script](https://larbs.xyz) so I want it to look pretty
|
|
||||||
and be usable out the box.
|
|
||||||
+ An optional autosync script that will smartly run offlineimap when connected
|
|
||||||
to the internet at what interval you want and will notify you with a ding
|
|
||||||
when new mail arrives.
|
|
||||||
|
|
||||||
### Will it work on my email? (95% yes)
|
- `neomutt` - the email client.
|
||||||
|
- `offlineimap` - downloads the email.
|
||||||
|
- `msmtp` - sends your email.
|
||||||
|
- `dialog` - is the mutt-wizard interface.
|
||||||
|
|
||||||
Yes! At this point, the only problems are the unexpected ones. Please try it,
|
**You must have a GPG public/private key pair as well.** This is what will safely encrypt your passwords.
|
||||||
and if you do run into problems, email me at
|
|
||||||
[luke@lukesmith.xyz](mailto:luke@lukesmith.xyz)! I've tried the system
|
|
||||||
personally on Gmail, Teknik.io, cock.li and Yandex, while others have tried
|
|
||||||
other providers.
|
|
||||||
|
|
||||||
If you have a ProtonMail account, due to their secure setup, you must have
|
### Optional dependencies
|
||||||
[ProtonMail Bridge](https://protonmail.com/bridge/) installed and configured.
|
|
||||||
Compatibility with ProtonMail is still in testing, so be sure to open an issue
|
|
||||||
if you have problems as I do not have a paid account to test this with.
|
|
||||||
|
|
||||||
Note also that Gmail and some providers require you to enable sign-ins from
|
mutt-wizard is configured by default for you to use other useful tools, but these are not strictly necessary.
|
||||||
third-party (or as they call it "less secure") applications to be able to load
|
|
||||||
mail with mutt and offlineimap. Be sure to enable that!
|
|
||||||
|
|
||||||
## Installation and Dependencies
|
- `w3m` - You'll probably want this one at least. It will help you read HTML email from those terrible people who send it... if you want to. It will also enable viewing images in mutt.
|
||||||
|
- `notmuch` - can index your mail to be easily searched. Install it and run `notmuch setup`, tell it that your mail is in `~/.local/share/mail/`. You can run it in mutt with `ctrl-f`. Remember to run `notmuch new` to process new mail, although the included `mailsync` script does this for you.
|
||||||
|
- `abook` - a terminal-based address book. Pressing tab while typing an address to send mail to will suggest contacts that are in your abook.
|
||||||
|
- A cron manager - if you want to enable the auto-sync feature.
|
||||||
|
|
||||||
`dialog`, `neomutt`, `offlineimap` and `msmtp` should be installed. You also need to
|
## New stuff and improvements since the original release
|
||||||
have a GPG public/private key pair for the wizard to automatically store your
|
|
||||||
passwords. The whole repo should be cloned to `~/.config/mutt/`. (If you have a
|
|
||||||
previous mutt folder, you'll want to back it up or delete it first.)
|
|
||||||
|
|
||||||
```
|
- More autogenerated shortcuts that allow quickly moving and copying mail between boxes.
|
||||||
git clone https://github.com/LukeSmithxyz/mutt-wizard.git ~/.config/mutt
|
- More elegant attachment handling. Image/video/pdf attachments without relying on the neomutt instance.
|
||||||
```
|
- abook integration by default.
|
||||||
|
- The messy template files have been removed and are now a part of the script itself.
|
||||||
|
- Optimal XDG standards compliance, moving offlineimap and msmtp configs to `~/.config/` and moving mail to `~/.local/share/mail/`.
|
||||||
|
- `accounts/` hold account data and `bin/` holds script run by for for mutt. All other directories have been disintegrated.
|
||||||
|
- Better handling of different gpg versions.
|
||||||
|
- Narrow POSIX compliance because why not?
|
||||||
|
|
||||||
You will want to delete or rename your current `~/.offlineimaprc` and
|
## Known issues (not my fault!)
|
||||||
`~/.msmtprc` as well, as although you can later modify these files produced by
|
|
||||||
the script, you must have no file there the first time you add your first
|
|
||||||
account or the wizard will assume some settings are already set which aren't.
|
|
||||||
|
|
||||||
Just run `mutt-wizard.sh` and choose to add an account. After you do so, you
|
- If you're using a Gmail account, check the pinned issue on the Github. Gmail accounts haven't been working properly with offlineimap recently, but there's an easy fix. Remember also to enable third-party ("""less secure""") applications.
|
||||||
may run `offlineimap` to begin the mailsync, and you will be able to run
|
- Check the ProtonMail issue as well. ProtonMail recently allows IMAP usage with their Bridge program for paid users. I don't have this, so I can't bugtest on it, but many users have gotten it working. Either way, it requires a little more work than just using the wizard.
|
||||||
neomutt and see your mail. If mutt doesn't immediately work properly run the
|
- Don't expect mutt-wizard to work out the box on a university email. Universities often have special IMAP policies and server settings. You might be lucky, but you might have to changes some settings in the offlineimap config file to get it to work properly with a university email.
|
||||||
`Redetect mailboxes` option, then open mutt. This may be necessary for some
|
- If you use an email server whose mailboxes are not in English, mutt-wizard might not be able to guess which is which, so you may have to manually set your Inbox, Sent, Trash, Drafts, etc. in your mutt config file.
|
||||||
accounts.
|
|
||||||
|
|
||||||
|
## Help!
|
||||||
|
|
||||||
### Installation on macOS
|
- Try mutt-wizard out on weird machines and weird email addresses and report any errors.
|
||||||
|
- Open a PR to add new server information into `domains.csv` so their users can more easily use mutt-wizard.
|
||||||
|
- If nothing else, [Donate!](https://paypal.me/LukeMSmith)
|
||||||
|
|
||||||
You may need to install or symlink additional packages on macOS. Otherwise the generation of configuration files may fail, or worse.
|
See Luke's website [here](https://lukesmith.xyz). Email him at [luke@lukesmith.xyz](mailto:luke@lukesmith.xyz).
|
||||||
|
|
||||||
```
|
|
||||||
ln -s /usr/local/bin/gpg /usr/local/bin/gpg2
|
|
||||||
brew install coreutils
|
|
||||||
ln -s /usr/local/bin/gshred /usr/local/bin/shred
|
|
||||||
```
|
|
||||||
|
|
||||||
### Non-essential dependencies for extra features
|
|
||||||
|
|
||||||
The automatically deployed configs will look for certain programs for certain
|
|
||||||
extra abilities. Consider installing the following for the extra functionality.
|
|
||||||
|
|
||||||
+ `notmuch` -- for mail searching and indexing set to `ctrl-f`. Be sure to run
|
|
||||||
`notmuch setup`. Remember your mail is in `~/.mail/` when you configure
|
|
||||||
notmuch.
|
|
||||||
+ `w3m` and/or `w3mimg` -- for HTML emails and viewing images. Like .pdfs, view in the attachments menu.
|
|
||||||
+ A cron manager if you want the autosync feature.
|
|
||||||
+ `iproute2mac` for Mac users who want the autosync feature.
|
|
||||||
+ `mpv` if you want the autosync feature to notify you with a ding on new mail.
|
|
||||||
|
|
||||||
## The autosync
|
|
||||||
|
|
||||||
If you activate the autosync at a significantly infrequent interval, by
|
|
||||||
default, your system might prompt you for your GPG password every time. To
|
|
||||||
prevent this, you can change the time a GPG unlock lasts by adding a time in
|
|
||||||
seconds as below into `~/.gnupg/gpg-agent.conf`:
|
|
||||||
|
|
||||||
```
|
|
||||||
default-cache-ttl <number-of-seconds>
|
|
||||||
max-cache-ttl <number-of-seconds>
|
|
||||||
```
|
|
||||||
|
|
||||||
You can also use [pam-gnupg](https://github.com/cruegge/pam-gnupg) if you want
|
|
||||||
to just log into your keyring immediately on log in. This is what I do, but
|
|
||||||
it's less secure if you leave you computer logged on.
|
|
||||||
|
|
||||||
## You can help!
|
|
||||||
|
|
||||||
If you use mutt with a particular host or domain, put your server information
|
|
||||||
in `domains.csv`! This will make everyone else who uses your email provider's
|
|
||||||
life much easier!
|
|
||||||
|
|
||||||
Or you can help monetarily via [Patreon](https://patreon.com/lukesmith) or
|
|
||||||
[Paypal](https://paypal.me/LukeMSmith)!
|
|
||||||
|
|
||||||
## Notes
|
|
||||||
|
|
||||||
Mail is stored in `~/.mail`. mutt configs and caches for each account are in
|
|
||||||
`~/.config/mutt/accounts/`. Encypted passwords are in
|
|
||||||
`~/.config/mutt/credentials`. A "personal" muttrc, with the macros for
|
|
||||||
switching accounts and the default config is in
|
|
||||||
`~/.config/mutt/personal.muttrc`.
|
|
||||||
|
|
||||||
## Todo
|
|
||||||
|
|
||||||
* Expand the list of server information in `domains.csv`, possibly porting the
|
|
||||||
Thunderbird autoconfigure settings.
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Give this script the abstract name of an account and it will make it the default.
|
|
||||||
|
|
||||||
title=$1
|
|
||||||
muttdir="$HOME/.config/mutt/"
|
|
||||||
muttdirsed=$(echo $muttdir | sed -e 's/\//\\\//g')
|
|
||||||
|
|
||||||
grep "$muttdir"personal.muttrc -e "^source .*accounts.*" >/dev/null && \
|
|
||||||
sed -i "s/^source .*accounts.*/source ${muttdirsed}accounts\/$title.muttrc/g" "$muttdir"personal.muttrc
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
defaults
|
|
||||||
auth on
|
|
||||||
tls on
|
|
||||||
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
|
||||||
logfile ~/.msmtp.log
|
|
||||||
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
account $title
|
|
||||||
host $smtp
|
|
||||||
port $sport
|
|
||||||
from $login
|
|
||||||
user $login
|
|
||||||
passwordeval "gpg -d --quiet --for-your-eyes-only --no-tty ~/.config/mutt/credentials/$title.gpg | sed -e '$a\'"
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# vim: filetype=neomuttrc
|
|
||||||
# muttrc file for account $title
|
|
||||||
set realname = "$realname"
|
|
||||||
set from = "$fulladdr"
|
|
||||||
set sendmail = "/usr/bin/msmtp -a $title"
|
|
||||||
set folder = "~/.mail/$title"
|
|
||||||
set header_cache = ~/.config/mutt/accounts/$title/cache/headers
|
|
||||||
set message_cachedir = ~/.config/mutt/accounts/$title/cache/bodies
|
|
||||||
set certificate_file = ~/.config/mutt/accounts/$title/certificates
|
|
||||||
source "~/.config/mutt/credentials/getmuttpass $title |"
|
|
||||||
|
|
||||||
alias me $realname <$fulladdr>
|
|
||||||
|
|
||||||
set mbox_type = Maildir
|
|
||||||
set ssl_starttls = yes
|
|
||||||
set ssl_force_tls = yes
|
|
||||||
|
|
||||||
bind index,pager gg noop
|
|
||||||
bind index,pager g noop
|
|
||||||
bind index gg first-entry
|
|
||||||
unmailboxes *
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[general]
|
|
||||||
accounts =
|
|
||||||
starttls = yes
|
|
||||||
ssl = yes
|
|
||||||
pythonfile = ~/.config/mutt/credentials/imappwd.py
|
|
||||||
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[general]
|
|
||||||
accounts =
|
|
||||||
starttls = yes
|
|
||||||
ssl = true
|
|
||||||
pythonfile = ~/.config/mutt/credentials/imappwd.py
|
|
||||||
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
[Account $title]
|
|
||||||
localrepository = $title-local
|
|
||||||
remoterepository = $title-remote
|
|
||||||
|
|
||||||
[Repository $title-remote]
|
|
||||||
auth_mechanisms = LOGIN
|
|
||||||
type = $type
|
|
||||||
remoteuser = $login
|
|
||||||
remotepasseval = mailpasswd("$title")
|
|
||||||
remotehost = $imap
|
|
||||||
remoteport = $iport
|
|
||||||
folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail']
|
|
||||||
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
|
|
||||||
|
|
||||||
[Repository $title-local]
|
|
||||||
type = Maildir
|
|
||||||
localfolders = ~/.mail/$title
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
[Account $title]
|
|
||||||
|
|
||||||
localrepository = $title-local
|
|
||||||
remoterepository = $title-remote
|
|
||||||
|
|
||||||
[Repository $title-remote]
|
|
||||||
auth_mechanisms = LOGIN
|
|
||||||
type = $type
|
|
||||||
remoteuser = $login
|
|
||||||
sslcacertfile = /usr/local/etc/openssl/cert.pem
|
|
||||||
remotepasseval = mailpasswd("$title")
|
|
||||||
remotehost = $imap
|
|
||||||
remoteport = $iport
|
|
||||||
folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail']
|
|
||||||
sslcacertfile = /usr/local/etc/openssl/cert.pem
|
|
||||||
|
|
||||||
[Repository $title-local]
|
|
||||||
type = Maildir
|
|
||||||
localfolders = ~/.mail/$title
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
SERVICE,IMAP,imap port,SMTP,smtp port,spoolfile,postponed,record
|
|
||||||
"Zoho",imap.zoho.com,993,smtp.zoho.com,465,,,
|
|
||||||
"iCloud",imap.mail.me.com,993,smtp.mail.me.com,587,,,
|
|
||||||
"Inbox.com",imap.inbox.com,993,smtp.inbox.com,465,,,
|
|
||||||
"Office 365",outlook.office365.com,993,smtp.office365.com,587,INBOX,Drafts,Sent Items
|
|
||||||
"Host Gator",gator4171.hostgator.com,993,gator4171.hostgator.com,587,INBOX,INBOX.Drafts,INBOX.Sent
|
|
||||||
"GoDaddy",imap.secureserver.net,993,smtpout.secureserver.net,465,,,
|
|
||||||
"Yandex",imap.yandex.com,993.00,smtp.yandex.com,465.00,,,
|
|
||||||
"Muny Mail",mail.muny.us,993,mail.muny.us,465,,,
|
|
||||||
|
File renamed without changes.
@@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
GPG="gpg"; command -v gpg >/dev/null || GPG="gpg2"
|
GPG="gpg"; command -v gpg >/dev/null || GPG="gpg2"
|
||||||
pass=$(printf '%q' "$("$GPG" --decrypt --quiet ~/.config/mutt/credentials/$1.gpg)")
|
pass=$(printf '%q' "$("$GPG" --decrypt --quiet ~/.local/share/muttwizard/$1.gpg)")
|
||||||
echo "set smtp_pass=\"$pass\""
|
echo "set smtp_pass=\"$pass\""
|
||||||
echo "set imap_pass=\"$pass\""
|
echo "set imap_pass=\"$pass\""
|
||||||
@@ -3,7 +3,7 @@ import subprocess
|
|||||||
home = os.path.expanduser("~")
|
home = os.path.expanduser("~")
|
||||||
def mailpasswd(acct):
|
def mailpasswd(acct):
|
||||||
acct = os.path.basename(acct)
|
acct = os.path.basename(acct)
|
||||||
path = "%s/.config/mutt/credentials/%s.gpg" % (home,acct)
|
path = "%s/.local/share/muttwizard/%s.gpg" % (home,acct)
|
||||||
args = ["gpg2", "--use-agent", "--quiet", "--batch", "-d", path]
|
args = ["gpg2", "--use-agent", "--quiet", "--batch", "-d", path]
|
||||||
try:
|
try:
|
||||||
return subprocess.check_output(args).strip().decode('UTF-8')
|
return subprocess.check_output(args).strip().decode('UTF-8')
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
text/plain; vim %s ;
|
text/plain; vim %s ;
|
||||||
text/html; ~/.config/mutt/etc/openfile.sh %s ;
|
text/html; ~/.config/mutt/bin/openfile %s ;
|
||||||
text/html; w3m -I %{charset} -T text/html; copiousoutput;
|
text/html; w3m -I %{charset} -T text/html; copiousoutput;
|
||||||
image/*; ~/.config/mutt/etc/muttimage.sh %s ; copiousoutput
|
image/*; ~/.config/mutt/bin/muttimage %s ; copiousoutput
|
||||||
video/*; setsid mpv --quiet %s &; copiousoutput
|
video/*; setsid mpv --quiet %s &; copiousoutput
|
||||||
application/pdf; ~/.config/mutt/etc/openfile.sh %s ;
|
application/pdf; ~/.config/mutt/bin/openfile %s ;
|
||||||
application/pgp-encrypted; gpg -d '%s'; copiousoutput;
|
application/pgp-encrypted; gpg -d '%s'; copiousoutput;
|
||||||
@@ -16,7 +16,7 @@ if [ "$(uname)" = "Darwin" ]
|
|||||||
then
|
then
|
||||||
notify() { osascript -e "display notification \"$2 in $1\" with title \"You've got Mail\" subtitle \"Account: $account\"" && sleep 2 ;}
|
notify() { osascript -e "display notification \"$2 in $1\" with title \"You've got Mail\" subtitle \"Account: $account\"" && sleep 2 ;}
|
||||||
else
|
else
|
||||||
notify() { mpv --really-quiet ~/.config/mutt/etc/notify.opus & pgrep -x dunst && notify-send -i ~/.config/mutt/etc/email.gif "$2 new mail(s) in \`$1\` account." ;}
|
notify() { mpv --really-quiet ~/.config/mutt/bin/notify.opus & pgrep -x dunst && notify-send -i ~/.config/mutt/bin/email.gif "$2 new mail(s) in \`$1\` account." ;}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo " 🔃" > /tmp/imapsyncicon
|
echo " 🔃" > /tmp/imapsyncicon
|
||||||
@@ -28,10 +28,10 @@ rm -f /tmp/imapsyncicon
|
|||||||
pkill -RTMIN+12 i3blocks
|
pkill -RTMIN+12 i3blocks
|
||||||
|
|
||||||
# Check all accounts/mailboxes for new mail. Notify if there is new content.
|
# Check all accounts/mailboxes for new mail. Notify if there is new content.
|
||||||
for account in $(ls ~/.mail)
|
for account in $(ls ~/.local/share/mail)
|
||||||
do
|
do
|
||||||
#List unread messages newer than last mailsync and count them
|
#List unread messages newer than last mailsync and count them
|
||||||
newcount=$(find ~/.mail/"$account"/INBOX/new/ -type f -newer ~/.config/mutt/etc/.mailsynclastrun 2> /dev/null | wc -l)
|
newcount=$(find ~/.mail/"$account"/INBOX/new/ -type f -newer ~/.config/mutt/bin/.mailsynclastrun 2> /dev/null | wc -l)
|
||||||
if [ "$newcount" -gt "0" ]
|
if [ "$newcount" -gt "0" ]
|
||||||
then
|
then
|
||||||
notify "$account" "$newcount" &
|
notify "$account" "$newcount" &
|
||||||
@@ -40,4 +40,4 @@ done
|
|||||||
notmuch new
|
notmuch new
|
||||||
|
|
||||||
#Create a touch file that indicates the time of the last run of mailsync
|
#Create a touch file that indicates the time of the last run of mailsync
|
||||||
touch ~/.config/mutt/etc/.mailsynclastrun
|
touch ~/.config/mutt/bin/.mailsynclastrun
|
||||||
File renamed without changes.
File renamed without changes.
@@ -1,14 +1,9 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
# Helps open a file with xdg-open from mutt in a external program without weird side effects.
|
# Helps open a file with xdg-open from mutt in a external program without weird side effects.
|
||||||
|
|
||||||
base=$(basename "$1")
|
base=$(basename "$1")
|
||||||
ext="${base##*.}"
|
ext="${base##*.}"
|
||||||
|
|
||||||
file=$(mktemp -u --suffix=".$ext")
|
file=$(mktemp -u --suffix=".$ext")
|
||||||
|
|
||||||
rm -f "$file"
|
rm -f "$file"
|
||||||
|
|
||||||
cp "$1" "$file"
|
cp "$1" "$file"
|
||||||
|
|
||||||
setsid xdg-open "$file" >/dev/null 2>&1 &
|
setsid xdg-open "$file" >/dev/null 2>&1 &
|
||||||
@@ -108,7 +108,7 @@ mortemale.org,mail.autistici.org,993,smtp.autistici.org,465
|
|||||||
msn.com,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
|
msn.com,imap-mail.outlook.com,993,smtp-mail.outlook.com,587
|
||||||
muny.us,mail.muny.us,993,mail.muny.us,465
|
muny.us,mail.muny.us,993,mail.muny.us,465
|
||||||
myself.com,imap.mail.com,995,smtp.mail.com,587
|
myself.com,imap.mail.com,995,smtp.mail.com,587
|
||||||
narod.ru,imap.yandex.com,993,smtp.yandex.com,465
|
narod.ru,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
national.shitposting.agency,mail.cock.li,993,mail.cock.li,587
|
national.shitposting.agency,mail.cock.li,993,mail.cock.li,587
|
||||||
nigge.rs,mail.cock.li,993,mail.cock.li,587
|
nigge.rs,mail.cock.li,993,mail.cock.li,587
|
||||||
nuke.africa,mail.cock.li,993,mail.cock.li,587
|
nuke.africa,mail.cock.li,993,mail.cock.li,587
|
||||||
@@ -142,14 +142,14 @@ wants.dicksinhisan.us,mail.cock.li,993,mail.cock.li,587
|
|||||||
wants.dicksinmyan.us,mail.cock.li,993,mail.cock.li,587
|
wants.dicksinmyan.us,mail.cock.li,993,mail.cock.li,587
|
||||||
web.de,imap.web.de,993,smtp.web.de,587
|
web.de,imap.web.de,993,smtp.web.de,587
|
||||||
writeme.com,imap.mail.com,995,smtp.mail.com,587
|
writeme.com,imap.mail.com,995,smtp.mail.com,587
|
||||||
ya.ru,imap.yandex.com,993,smtp.yandex.com,465
|
ya.ru,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
yahoo.com,imap.mail.yahoo.com,993,smtp.mail.yahoo.com,587
|
yahoo.com,imap.mail.yahoo.com,993,smtp.mail.yahoo.com,587
|
||||||
yandex.by,imap.yandex.com,993,smtp.yandex.com,465
|
yandex.by,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
yandex.com,imap.yandex.com,993,smtp.yandex.com,465
|
yandex.com,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
yandex.kz,imap.yandex.com,993,smtp.yandex.com,465
|
yandex.kz,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
yandex.net,imap.yandex.com,993,smtp.yandex.com,465
|
yandex.net,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
yandex.ru,imap.yandex.com,993,smtp.yandex.com,465
|
yandex.ru,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
yandex.ua,imap.yandex.com,993,smtp.yandex.com,465
|
yandex.ua,imap.yandex.com,993,smtp.yandex.com,587
|
||||||
zoho.com,imap.zoho.com,993,smtp.zoho.com,465
|
zoho.com,imap.zoho.com,993,smtp.zoho.com,465
|
||||||
duke.edu,outlook.office365.com,993,smtp.office365.com,587
|
duke.edu,outlook.office365.com,993,smtp.office365.com,587
|
||||||
|
|
||||||
|
500 Internal Server Error
An error occurred: An error occurred Gitea Version: 28.0.0 |