Очищення imap скриньки від старих листів

 
Прийшло таке дивне робоче повідомлення, але здивування було більше, коли в скрині виявилось 103 тисячі повідомлень.

Ділюсь скриптом, який за 5 хвилин видалив 70 тисяч повідомлень.


#!/usr/bin/python

MAIL_SERVER = 'mail.server.com'
USERNAME = 'login@domain.com'
PASSWORD = 'pass'
MAILBOX = 'INBOX'
MAX_DAYS = 392 # Deletes messages older than a week

import imaplib
import datetime

today = datetime.date.today()
cutoff_date = today - datetime.timedelta(days=MAX_DAYS)
before_date = cutoff_date.strftime('%d-%b-%Y')

search_args = '(BEFORE "%s")' % before_date

imap = imaplib.IMAP4(MAIL_SERVER)
imap.login(USERNAME, PASSWORD)
imap.select(MAILBOX)

typ, data = imap.search(None, 'ALL', search_args)

for num in data[0].split():
    print num
    imap.store(num, '+FLAGS', '\\Deleted')

imap.expunge()

imap.close()
imap.logout()

Зручне налаштування автозавантаження сервісів в Debian/Ubuntu

# apt-get install rcconf sysv-rc-conf

і запуск

# sysv-rc-conf


Бан пошукових ботів в nginx

В самому верху віртуалхоста:

map $http_user_agent $limit_bots {
     default 0;
     ~*(google|bing) 1;
     ~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1;
     ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1;
     ~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1;
     ~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1;
     ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1;
     ~*(Twengabot|htmlparser|libwww|Python|perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1;
}

В середині location /

if ($limit_bots = 1) {
  return 403;
}

Для перевірки:

# curl -H "Host: site_name" -A "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" http://server_ip
# curl -H "Host: site_name" -A "msnbot/2.0b (+http://search.msn.com/msnbot.htm)" http://server_ip
# curl -H "Host: site_name" -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" http://server_ip

Скрипт оновлення безкоштовних сертифікатів letsencrypt

DOMAINS=$HOSTNAME
systemctl stop nginx
/opt/letsencrypt/letsencrypt-auto certonly --debug -d $DOMAINS --email hostmaster@$HOSTNAME --standalone --renew-by-default --agree-tos --standalone-supported-challenges tls-sni-01 &&
cp -Lr /etc/letsencrypt/live/$HOSTNAME/cert.pem /usr/local/mgr5/etc/manager.crt &&
cp -Lr /etc/letsencrypt/live/$HOSTNAME/privkey.pem /usr/local/mgr5/etc/manager.key &&
systemctl start nginx
#killall5 -9 core