Отправка письма из shell

Как отправить письмо с вложением из оболочки UNIX? Есть несколько вариантов, я рассмотрю самые простые, – системными средствами и сторонним ПО.

mail + uuencode

Почти наверняка самый рабочий способ на любой системе.

~> ( echo "body text message" ; echo ; cat file.txt | uuencode file.txt ) | mail -s 'Subject' to@domain.tld

в почтовый ящик придет сообщение в виде:

To: to@domain.tld
Subject: Subject
Message-Id: <20111205165235.0DB932ECAC@dom.tld>
Date: Mon,  5 Dec 2011 16:52:35 +0000 (UTC)
From: sender@domain.tld (sender)

body text message

begin 644 file.txt
M+W-B:6XO;61M9G,@+7,@-#`Y-DT@+6D@,3`R-"`M=R!M>7-Q;#IM>7-Q;"`M
M<"`W-S<@;60P("]M>7-Q;%]T;7`*(R,M+2TM+2TC(PT*26YC;W)R96-T(&EN
...
M;F1E>"YP:'`[(&-D("T[(&QS("UL82`D:2]I;F1E>"YP:'`[(&1O;F4*(R,M
)+2TM+2TC(PH*
`
end

Плюсы: универсальный способ, не требует установки дополнительного ПО

Минусы: не все почтовые клиенты понимают этот формат и письмо возможно придется раскодировывать. Если вы пользуетесь почтой Гугла (GMail) – вам повезло, такой формат он понимает и файл можно будет скачать как обычный прикрепленный файл.

mail + base64
~> cat file.txt | base64 | mail -s 'Subject' to@dom.tld
~> cat file.txt | uuencode -m file.txt | mail -s 'Subj' to@dom.tld

Плюсы: файл в письме отправится

Минусы: письмо наверняка будет не понято почтовым клиентом и вложение будет просто выведено в виде текста, который нужно дополнительно распаковывать. GMail такие письма не понимает.

sendmail
~> ( cat header ; cat ssh.txt | base64 ) | /usr/sbin/sendmail -t
~> ( cat header ; cat ssh.txt | uuencode -m ssh.txt ) | /usr/sbin/sendmail -t
~>
~> ( cat header ; cat ssh.txt | uuencode ssh.txt ) | /usr/sbin/sendmail -t
# это не правильно, но GMail понимает и такой формат

В файл header предварительно внесены необходимые заголовки:

~> cat header
Subject: With attachment
From: me@dom.tld
To: to@domain.tld
Content-Type: text/plain; charset=UTF-8
Content-Disposition: attachment; filename="file.txt"
Content-Transfer-Encoding: base64

Здесь мы явно указываем кодировку файла (UTF-8), имя файла, которое будет показываться в письме (может не совпадать с именем файла, который мы кодируем) и метод кодирования (base64). В третьем примере файл будет закодирован в uuencode, это тоже может вызвать сложности у почтовых клиентов. uuencode –m, в отличие от base64, помечает начало и конец закодированных данных, так же, как и просто uuencode. В первом случае начало данных будет помечено строкой:

begin-base64 644 file.txt

конец:

====

во втором случае:

begin 644 file.txt

конец:

end

Плюсы: письмо понимается большинством почтовых клиентов

Читать остальную часть заметки »

Теги: , , , , , , , , ,

Better Better GMail

Я уже писал о расширении Better GMail для Google Chrome, сейчас его поддерживает другой разработчик, так что обновляйтесь и пользуйтесь. =)


Теги: , , , , , , ,

Отслеживаем IP

В джумле (и подобных изваяниях) часто встречается компонент отвечающий за отправку почты – PHPMailer. Очень полезным свойством этой приблуды этого класса есть маркировка письма заголовком со своей версией. Выглядит эта строка так (файл libraries/phpmailer/phpmailer.php):

$result .= $this->HeaderLine('X-Mailer', 'PHPMailer (phpmailer.sourceforge.net) [version ' . $this->Version . ']');

Это хорошо, но иногда не мешало бы видеть IP-адрес отправителя письма с сайта. Для этого под этой строчкой следует добавить:

$result .= $this->HeaderLine('X-Original-IP', $_SERVER['REMOTE_ADDR']);

Обозвать заголовок можно как угодно, главное, что будет видно, что это такое.

Если на сайте завелся спамер, то по IP-адресу можно будет быстро сделать выборку по таблице базы и удалить спамовые сообщения.

Можно еще сделать выборку по ключевым словам в сообщениях:

select id, ip, content from jos_phocaguestbook_items where content like '%viagra%' limit 5;

А затем:

delete from jos_phocaguestbook_items where id=6;

IP в заголовке может помочь при борьбе со спамерами, которые коверкают названия таблэток, например пишут "V1agra" и т.п., шаблон составить сложно, а по IP сделать выборку и забанить гада будет очень просто.


Теги: , , , , , , , , , , ,

Почтовые баталии

удаляйте спам оптом

Как удалить письмо из очереди писем? Или как удалить плохие письма, например, спамовые, из очереди писем?

Все зависит от почтовой программы. Просмотреть список писем (очередь) можно командой

mailq
Postfix

Письма, которые почтовая программа postfix не доставила (зависит от ваших настроек, количества отправляемых писем в час), можно быстро просмотреть так:

lynx -dump /var/spool/postfix/deferred/X/XYYYYYY

Идентификатор письма XYYYYYY можно увидеть  в выводе mailq. Соответственно, первая цифра или буква является именем подкаталога в каталоге deferred.

Для перекодировки письма в другую кодировку, к вышеуказанной команде можно добавить через пайп (|):

iconv -f utf-8 -t koi8-r -c
# -c - подавляет ошибки

Перезапустить всю очередь (обычно используется при внесении изменений в конфиг, сообщения начнут обрабатываться заново):

postsuper -r ALL

Если в очереди нет полезных писем, можно удалить всю очередь postfix:

postsuper -d ALL

Чтобы удалить конкретное письмо:

postsuper -d ИДЕНТИФИКАТОР_ПИСЬМА

Понятное дело, что, если в очереди сотни или тысячи плохих писем, то на таком удалении далеко не уедешь. Поэтому можно просто найти письма со спамом и удалить:

find /var/spool/postfix/deferred/ -name "*" -exec grep -i "LONASEX" {} \; \
| awk -F / '{print $7}' | awk '{print $1}' | postsuper -d -

Будут найдены и удалены письма, содержащие ключевое слово "LONASEX".

Удалить письма ошибок доставки можно так:

mailq | grep DAEMON | awk '{print $1}' | postsuper -d –
Читать остальную часть заметки »

Теги: , , , , , , , , , ,

Google Apps

Google в последнее время просто ЖЖОТ. Во-первых, они так и не могут устранить ошибку с невозможностью отключить прием всей почты (catch-all) на домене, с этой проблемой столкнулись некоторые пользователи Гугл Аппс, во-вторых, подписанные письма гугла попадают в спам.

Вот сегодняшнее письмо, обнаруженное в спаме:

тема: Google Apps Auto-Forwarding Issue
подписан: google.com

Dear USER,
We wanted to make sure you were aware of a temporary issue with Gmail auto-forwarding. Some of your users may have been affected, if they use either of the following features, which are available in the Gmail user interface, under Settings:
* Email filter with auto-forwarding
* Auto-forwarding of all email
While releasing minor fixes to the Gmail vacation auto-responder last week, we discovered that some messages were no longer being auto-forwarded. We found the root cause of the issue and quickly fixed it. However, messages set to automatically forward to another account may not have been forwarded, if they were received between the following times:
PDT: Tuesday, July 20, at 5:00 PM to Thursday, July 22, at 6:30 PM
GMT: Wednesday, July 21, at 12:00 AM to Friday, July 23, at 1:30 AM
A list of users who may have been affected by this issue appears at the end of this message. To ensure these users don’t miss any email sent to their Gmail account that they planned to read elsewhere, they should check their Gmail inbox and the account to which they forward messages. Here’s an email message you can send to these users to inform them of the issue. Make sure to change the times to your time zone, if necessary.
____________
Dear [User],
Google has informed us that Gmail auto-forwarding features may have been temporarily disabled during the following times:
Tuesday, July 20, at 5:00 PM PDT to Thursday, July 22, at 6:30 PM PDT
If you set up a Gmail filter to automatically forward specific messages, or you automatically forward all email to another account, we recommend that check your Gmail inbox and the account to which you forward messages to see if any messages are missing.
____________
We have taken measures to help prevent this issue from recurring in the future. We apologize for any inconvenience this may have caused, and thank you for using Google Apps.
Here’s the list of users who may have been affected:
USER
USER
Sincerely,
The Google Apps Team
Email Preferences: You have received this mandatory email service announcement to update you about important changes to your Google Apps product or account.
Google Inc.
1600 Amphitheatre Parkway
Mountain View, CA 94043

1) я ни разу не отправлял письма Google в спам, спам-фильтр гугла решил это сам.

2) почему нельзя сделать перманентное правило не отправлять такие служебные письма в спам? 🙂


Теги: , , , , ,

Pilot Handwriting

Pilothandwriting – сервис, который позволяет создавать письма, написанные вашим почерком. Вам понадобится зарегистрироваться в системе и создать свой алфавит. Для этого нужно распечатать специальную таблицу и заполнить ее ячейки буквами, после чего сфотографировать вебкамерой и отредактировать неточности.

Как это выглядит наглядно показывает следующий видеоролик:

К сожалению, сервис поддерживает только английский язык 🙁


Теги: , , ,

Гугловодство

Наверняка вы уже знаете, что продвинутые сайты давно начинают осваивать HTML5. На YouTube уже можно просматривать видео без флеша, для этого нужно перейти по адресу http://www.youtube.com/html5 и нажать на ссылку “Join the HTML5 Beta”. Для переключения в Vimeo нужно кликнуть на любом ролике по ссылке “Switch to HTML5 player”.

В Google Reader можно убрать “социальную ориентированность”, для этого зайдите в Ридер, вставьте в адресную строку код javascript:

javascript:antisocial('true')

Если понадобится вернуть все назад:

javascript:antisocial('false')

А еще я попробовал интерфейс iPad в Google Mail. Не понравилось. Упрощенная версия как-то удобнее, мне кажется.

Можете убедиться сами (запускать в одну строчку):

chrome.exe --user-agent="Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us)
AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10"

Или добавьте в Фаерфоксе юзерагента в плагине User Agent Switcher


Теги: , , , , , , , , , , , ,