Skip to content


Включение в лог sSMTP даты и времени отправки письма

Патч, который добавляет в лог запись даты и врмени отправки письма.
Чтобы запись в лог работала, sSMTP должен быть сконфигурен с ключом --enable-logfile.
Я также добавляю еще и ключ --enable-ssl, чтобы в логе не было ругани

Unable to set UseTLS="NO"
Unable to set UseTLSCert="NO"

Тестировалось на sSMTP 2.62, размер файла ssmtp.c 42980 байт.
Чтобы пропатчить, используем в директории, где лежит ssmtp.c, команду

patch -p0 < ssmtp.patch

Содержимое файла ssmtp.patch:

--- ssmtp.c 2008-03-06 22:01:22.000000000 +0200
+++ ssmtp.c 2009-03-15 00:02:11.000000000 +0200
@@ -39,6 +39,9 @@
 #include <fcntl.h>
 #include "xgethostname.h"
 
+// added by avz 2008-03-14
+#include <time.h>
+
 bool_t have_date = False;
 bool_t have_from = False;
 #ifdef HASTO_OPTION
@@ -112,12 +115,12 @@
 #ifdef LOGFILE
  FILE *fp;
 
- if((fp = fopen("/tmp/ssmtp.log", "a")) != (FILE *)NULL) {
+ if((fp = fopen("/var/log/ssmtp.log", "a")) != (FILE *)NULL) {
    (void)fprintf(fp, "%s\n", buf);
    (void)fclose(fp);
  }
  else {
-   (void)fprintf(stderr, "Can't write to /tmp/ssmtp.log\n");
+   (void)fprintf(stderr, "Can't write to /var/log/ssmtp.log\n");
  }
 #endif
 
@@ -1408,6 +1411,9 @@
  uid_t uid;
  bool_t minus_v_save;
  int timeout = 0;
+ // added by avz 2009-03-14
+  time_t event_time;
+ struct tm *tms;
 
  outbytes = 0;
  ht = &headers;
@@ -1663,8 +1669,12 @@
  (void)smtp_okay(sock, buf);
  (void)close(sock);
 
- log_event(LOG_INFO, "Sent mail for %s (%s) uid=%d username=%s outbytes=%d",
-   from_strip(uad), buf, uid, pw->pw_name, outbytes);
+ // added by avz 2009-03-14
+ time(&event_time);
+  tms=localtime(&event_time);
+ // log_event(LOG_INFO, "Sent mail for %s (%s) uid=%d username=%s outbytes=%d",  from_strip(uad), buf, uid, pw->pw_name, outbytes);
+ log_event(LOG_INFO, "%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d sent mail for %s (%s) uid=%d username=%s outbytes=%d",
+   1900+tms->tm_year,1+tms->tm_mon,tms->tm_mday,tms->tm_hour,tms->tm_min,tms->tm_sec, from_strip(uad), buf, uid, pw->pw_name, outbytes);
 
  return(0);
 }

Posted in *nix.

Tagged with .


hobocopy - копирование файлов, которые используются в данный момент

Оригинальное название статьи - 'Backup/Copy Files that are "In Use" or "Locked" in Windows'.

Если Вы когда-то пробовали скопировать файл, который используется другим приложением, Вы могли видеть сообщение об ошибке типа "The process cannot access the file because another process has locked a portion of the file". Начиная с Windows XP, поддерживается технология Volume Shadow Copy (в русской версии соответствующий сервис называется "Теневое копирование тома"), которая используется для реализации фич Previous versions ("Предыдущие версии") в Vista, System Restore ("Восстановление системы") и бекапов. Суть в том, что создается временный "снимок" файла или раздела, а затем приложению дается возможность чтения этого "снимка", даже если другие приложения читают или даже модифицируют данный файл. Одна из полезных утилит, которая использует технологию Volume Shadow Copy, называется HoboCopy. Для ее работы должен также быть запущен сервис "Microsoft Software Shadow Copy Provider".

Копиривание одного файла
Ситнаксис командной строки:

hobocopy c:\directoryname\ d:\backupdirectory\

Например, если мы хотим скопировать файл c:\users\vasya\mail\outlook.pst в d:\backups\outlook.pst, то команда будет следующая:

C:\>hobocopy c:\users\vasya\mail\ d:\backups\Outlook.pst
 
HoboCopy (c) 2006 Wangdera Corporation. [email protected]
Starting a full copy from c:\users\vasya\mail to d:\backups\
Copied directory
Backup successfully completed.
Backup started at 2008-03-09 01:57:28, completed at 2008-03-09 01:58:39.
1 files (606.45 MB, 1 directories) copied, 7 files skipped

Копирование директории
Можно также скопировать сразу всю директорию, в этом случае нужно использовать опции /full, /r (рекурсивное копирование) и /y (не спрашивать подтверждения).

Пример:

hobocopy /full /skipdenied /y /r c:\users\vasya\ d:\backups\

Инкрементальное копирование
А для регулярного копирования целого раздела пригодятся опции /incremental (копировать только файлы, измененные с момента последнего полного копирования) и /statefile (указывается путь к файлу, содержащему служебную информацию о последнем бекапе).

Пример:

hobocopy /incremental /statefile=d:\lastbackup.dat /y /r c:\users\vasya\ d:\backups\

При первом запуске вместо /incremental следует использовать /full чтобы создался файл состояния.

Утилиту скачать можно здесь.

Posted in Windows.

Tagged with , .


Установка rpm-пакета в chroot-окружении

Иногда возникает необходимость доустановить какой-то софт из RPM-пакета в уже созданное chroot-окружение. Это можно сделать, например, так:

rpm --root /chr/httpd --dbpath ../../var/lib/rpm/ --nodeps -ivh mc-4.6.1.rpm

Предполагается, что chroot-окружение живет в директории /chr/httpd, все зависимости для пакета mc уже установлены ранее. Параметром --dbpath задается путь к базе данных RPM, причем значение этого параметра указано так, чтобы устанавливаемый пакет зарегистрировался в базе основной системы (/var/lib/rpm).

А вот скачивать нужные пакеты удобнее всего с помощью yumdownloader.

Posted in *nix.

Tagged with , , .


Cisco ACL

К, примеру, стоит задача заблокировать отправку почты по протоколу SMTP для пользователя с затрояненной машинкой, которая рассылает спам. Создаем расширенный список доступа:

ip access-list extended spamblock
deny tcp any any eq smtp
permit ip any any

Вешаем созданный список доступа на нужный интерфейс:

interface Fa0/0.x
ip access-group spamblock in

Другой пример – разрешаем трафик только для двух заданных хостов (10.10.10.1 и 10.10.10.254) + icmp-трафик для сети 172.16.0.0/19, все остальное запрещаем:

ip access-list extended client1_in_rules
  permit ip host 10.10.10.1 any
  permit ip host 10.10.10.254 any
  permit icmp 172.16.0.0 0.0.31.255 any
  deny ip any any
ip access-list extended client1_out_rules
  permit ip any host 10.10.10.1
  permit ip any host 10.10.10.254
  permit icmp any 172.16.0.0 0.0.31.255
  deny ip any any
 
interface FastEthernet0/0.77
  description client1
  encapsulation dot1Q 77
  ip address 10.10.10.7 255.255.255.0
  ip access-group client1_out_rules in
  ip access-group client1_in_rules out
  no cdp enable
!

Следует учитывать, что здесь в именах ACL-ей слова "in" и "out" используются с точки зрения клиента, а ключевые слова "in" и "out" в конце выражений "ip access-group" используются с точки зрения маршрутизатора. Т.е. что для клиента входящий трафик, то для клиентского подинтерфейса роутера – исходящий и наоборот.

Posted in Cisco.

Tagged with , .