Facebook Twitter
Linkedin LJ
Git Instagram
35 posts tagged


Later Ctrl + ↑

CentOS 7.2 -> 7.3

  • it’s now rolling release, so to get updated:
yum install yum-utils
yum-config-manager --enable cr
yum update
  • it restores SELinux context to all defaults, so need to repeat all changes.
2016   centos   IT   linux

FC 25 annoying auth bugs

Evolution keeps failing to connect to Google calendars if it works for more than one day. Restarting goa-daemon with

/usr/libexec/goa-daemon --replace

does not always help. That is frustrating: why not always?

2016   desktop   linux

Evolution mail signature workaround

Evolution mail application in the Fedora 25 has annoying bug: it freezes when trying to add/edit signature (although, you can delete old one). It’s a known bug fixed in upstream and you can actually edit signature files (it’s quite tricky), but you can add shell script that would generate signature for you.

UPD: need to use “cowsay `fortune`”

2016   desktop   gnome   linux

Today I’ve learned...

My colleagues from the linux.org.ru board have found out one small flaw, so everyone including me stared to dance around PGP/GPG. So far I have found that among my systems:

  • Linux works as it should: two mouse clicks and you are ready. Covers 100% of my work mail, 75% of my personal mail.
  • Mac OS Sierra is not ready: GPG Suite has no support for the mail.app yet, just a workaround (yet). Hopefully we will see the solution in days.
  • iOS has only S/MIME out of the box, but GPG/PGP solution is ugly (due to restrictions).

And I don’t like install software that does not come with the operating system, for a reason :-)

2016   internet   ios   IT   linux   mac   mail   security

Backuping mysql

Recently I have to backup mysql database on quite heavily loaded server and I wanted to make backup daily on one hand and I wanted them not to affect production on the other. DB size is more than 150 Gb, about 50k users daily.

First approach was ty try to simply run musqldump and see what would happen. Site was down right after the backup has begun. Then I have tried to nice the mysqldump with

/usr/bin/nice -n 10 ionice -c2 -n 7

The result was better, site was down at about 10% of the job. Next I add --single-transaction, that have solved about 95% of problems, still some time site was down, so I had to add -q option. The final command was:

/usr/bin/nice -n 10 ionice -c2 -n 7 /usr/bin/mysqldump --plugin-dir=/usr/lib/mysql/plugin --user=dbuser -h bd.lxc --port=3306 --all-databases --single-transaction -q|/bin/gzip >  /var/bcp/backup-db-`/bin/date -I`.sql.gz
2016   IT   linux   mysql   web

E-mail notification on every login

It’s useful sometimes to get notifications on every ssh login that is happen on the server (though, could be used to monitor logins made by other means). First method is based on the /etc/profile, but it should not be used because user can override it with setting own variables if home directory is writable for him. Most convenient is to use PAM, putting in the /etc/pam.d/sshd execution of the script that whould send the mail in the session section:

session optional pam_exec.so seteuid  /usr/local/bin/send_mail.sh

I would not recommend to set “required” here because the fail of the scrip should not be critical. The script just sends notification mail:

if [ "$PAM_TYPE" != "open_session" ]
	exit 0

    echo "User: $PAM_USER"
    echo "User: $PAM_TYPE"
    echo "Remote Host: $PAM_RHOST"
    echo "Service: $PAM_SERVICE"
    echo "TTY: $PAM_TTY"
    echo "Date: `date`"
    echo "Server: `uname -a`"
 } | mail -s "$PAM_SERVICE login on `hostname -s` for account $PAM_USER" admin@example.com

exit 0

Don’t forget to put +x permissions on it with:

chmod +x  /usr/local/bin/send_mail.sh
2016   IT   linux

DNSBL checkers list

Since I am now running my own smtp-server, I have to deal with different black list servers myself and check my IP from time to time if it’s there or not.To cover pretty much everything valuable:


My IP was in 2 lists, DAN ME, APEWS and Barracuda.

DAN ME is a list maintained by some loser, who lists there all TOR-related IP addresses he can find. Unfortunately he lists not only the exit-points, but relays as well. Fortunately, his list is automated, but I had to shut down the TOR node.

Barraccuda removes by request, however, sells “subscription” for $20, so you will not be in the list again. That’s low!

At the moment it’s in the APEWS for 3(!) years and the owner has a long faq where he is explaining why he would not remove you ever.

Thinking of extra VPS for the additional MX.

2016   dns   IT   linux   networking

Leaseweb IPv6 PTR

Just for the record: Leaseweb does not support PTR record setting for the IPv6 address from the web panel, but you can ask the support team to set it with ticket. Google rejects my mail that comes from the IPv6 network with “PTR not found” message.

2016   dns   linux

SUDO !-rules

Checked one insecure approach to use sudo not to allow commands, but to prohibit commands for user with the NOT-operator “!”. Why it’s a bad idea we can see in the sudoers man page:

” Limitations of the ‘!’ operator
It is generally not effective to “subtract” commands from ALL using the ‘!’ operator. A user can trivially circumvent this by copying the  desired command to a different name and then executing that. For example:

bill ALL = ALL, !SU, !SHELLS

Doesn’t really prevent bill from running the commands listed in SU or SHELLS since he can simply copy those commands to a different name, or use a shell escape from an editor or other program. Therefore, these kind of restrictions should be considered advisory at best (and reinforced by policy).”

RHEL 5,6 – works
RHEL 7 – does not work, which is good. Still, wanted by some customers.

2016   IT   linux   sudo

Sieve: фильтрация почты на стороне сервера

осле того, как Google закрыл Reader, я утратил веру в большую компанию, которая делает для меня инструмент, решающий важные мне задачи. Я решился строить свой собственный Луна-парк с читалками, агрегаторами, болжеком и т.п. Почта на своем домене — первое, что приходит в голову. Не вопрос прописать MX запись, поставить Postfix на локальную доставку, установить IMAP-сервер Dovecot и почтовый веб-клиент Roundcube, вопрос повторить функциональность «большой» системы, в первую очередь, сортировку. Я не буду дублировать существующие инструкции, опишу только неочевидные моменты.

Что меня не устраивает в Gmail? Это идеология меток (labels), которых можно прицепить к одному и тому же письму несколько, а в IMAP отобразить их в виде папок. В результате корневая папка всегда полна писем, а я такой человек (возможно, мой случай уникален), что всю «лишнюю» почту я удаляю, а всю «нужную» раскладываю по папкам. Я стираю все уведомления от веб-магазинов, форумов, сервисов и т.п., что не укладывается в идеологию Гугла «зачем удалять, если место бесконечно?». Гугл хочет видеть у меня как можно больше, а я не хочу видеть мусор. Далее, я пользовался iCloud/me.com, там все просто: правила сортировки входящей почты просто не работают и все.

Итак, задача: чтобы Dovecot сам раскладывал почту по папкам IMAP’а. Честно говоря, я провел минут 20 в поиске «а где же у Roundcube’а настройки фильтрации?», а потом начал читать инструкции. К сожалению, все, что можно найти в вебе, не содержит полного списка граблей, на которые можно наступить, постараюсь по горячим следам описать их тут.

Сперва, надо выучить слово sieve, это целый язык описания правил фильтрации, созданный Cyrusoft’ом во время работы над почтовым сервером Cyrus (не к ночи помянут). Он позволяет писать такие вот самоочевидные правила
в ~/.dovecot.sieve:

require ["fileinto"];
# rule:[LinkedIn]
if header :contains "From" "linkedin.com"
	fileinto "INBOX/LinkedIn";
# rule:[Drupal Alerts]
if header :contains "Subject" "yet another home page"
	fileinto "INBOX/Drupal Alerts";
if header :contains "From" [ "user@example.com" ] {      
  addflag "\\flagged";
  fileinto "Trash";
# rule:[Paypal]
if allof (header :contains "From" "paypal")
	fileinto "INBOX/Ebay, Paypal";

Конечно, не очень хочется лезть в консоль, чтобы прописать новое правило фильтрации, к счастью, есть протокол managesieve, который позволяет почтовому клиенту рулить правилами на сервере. Удачно, что и Dovecot, и Roundcubе поддерживают обе функциональности. А дальше, начинаются грабли.

Во-первых, самое простое и естественное, что делается для включения seive, это установка mail_plugins = sieve где-то глобально для всего Dovecot’а. Это неправильно! Будет так:

Error: dlopen(/usr/lib64/dovecot/lib90_sieve_plugin.so) failed: /usr/lib64/dovecot/libdovecot-sieve.so.0: undefined symbol: mail_deliver_get_log_var_expand_table

Переменную следует выставить в /etc/dovecot/conf.d/15-lda.conf, для lda, локальной доставки. Включение managesieve и в Dovecot’е и в Roundcube проблем не вызывает (плагины есть в стандартной поставке), надо только не забыть прописать порт. Можно начинать писать правила, только работать они не будут, так как хотя почта раскладыватеся по папкой из клиента, «локальный доставщик» по-прежнему Postfix и INBOX не в /home/username, а в /var/mail/username. Надо прописать в main.cf mailbox_command = /usr/lib/dovecot/deliver -d «$USER». Теперь кажется, что все нормально: почти все письма раскладываются по почти всем правилам. Я потратил день на то, чтобы выяснить почему почта не попадает в папку и вывел коллег-из себя своими экспериментами. Я думал, что неправильно описываю свойства заголовка, так как там данные конверта и доставки отличаются (потому что общение происходит на сервере рассылки в рассылке, а выглядеть все должно как от собеседника собеседнику). Потом я увидел ошибку:

Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): Error: write() failed with mbox file /home/shaman007/mail/INBOX/LOR: File too large (process was started with ulimit -f limit)
Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): Error: sieve: msgid=<d068a42487535146ce3e7ec8b6557b27@andreybondarenko.com>: failed to store into mailbox 'INBOX/LOR': Internal error occurred. Refer to server log for more information. [2013-03-16 17:52:57]
Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): sieve: msgid=<d068a42487535146ce3e7ec8b6557b27@andreybondarenko.com>: stored mail into mailbox 'INBOX'
Mar 16 17:53:01 DJBZ002 dovecot: lda(shaman007): Error: sieve: execution of script /home/shaman007/.dovecot.sieve failed, but implicit keep was successful (user logfile /home/shaman007/.dovecot.sieve.log may reveal additional details)
Mar 16 17:53:01 DJBZ002 postfix/local[13359]: 4575811F76E: to=<shaman007@andreybondarenko.com>, orig_to=<me@andreybondarenko.com>, relay=local, delay=3.9, delays=0.21/0.02/0/3.7, dsn=2.0.0, status=sent (delivered to command: /usr/libexec/dovecot/dovecot-lda -f "$SENDER" -a "$RECIPIENT")
Mar 16 17:53:01 DJBZ002 postfix/qmgr[29435]: 4575811F76E: removed

File too large! Целых 100 мегабайт! Оказалось, что хотя инициирует ошибку Dovecot, дело в параметре mailbox_size_limit Postfix’а. По умолчанию там 5 что-ли мегабайт, надо выставить в 0. Кажется, это все грабли.

2016   IT   linux
Earlier Ctrl + ↓