Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

Работа с почтой в Linux в автономном режиме
Пред.След.

Я меня все есть, что теперь?

Сейчас создайте дополнительную учетную запись - вы получите почтовый адрес, и/или DNS запись и перенаправление на вашу учетную запись на сервере... Также установите программы Procmail и Fetchmail.

  1. Вам нужно создать файл .procmailrc, который будет содержать информацию о "доставке почты" вашим пользователям.

  2. Вам нужно создать файл "nosuchuser", чтобы автор письма знал, что его почта не дошла к пользователю, если такого пользователя нет.

  3. Для лучшей работы :) можно использовать crontab для проверки почты каждые XX минут, если у вас есть доступ к интернет.

Создание файла .fetchmailrc

Вам будет нужно создать файл .fetchmailrc, который будет содержать информацию (имя пользователя и пароль, а также агент доставки почты (mda), чтобы ее обрабатывать). Здесь дан пример файла ...

"(*** < file >*** text ***) .fetchmailrc"

server my.mail.server.com
proto pop3
user myaccountthere
pass deepestsecrets
flush
mda /usr/bin/procmail

Этот файл будет использоваться для того, чтобы забрать вашу почту. Пожалуйста, протестируйте его, используя программу fetchmail "fetchmail -vv" - и посмотрите, правильно ли приходит ваша почта... Возможно возникнут некоторые ошибки - т.к. управляющий файл procmail еще не создан. Вы можете подождать с тестированием до того, как создадите файл procmailrc, но я предупреждаю, если имеются проблемы, то они могут возникнуть из-за этого файла :). Это потребует создания собственной учетной записи пользователя - в моем случае, это "mailservice". Необходимо, чтобы читать файл мог только владелец, но не группа или кто-либо другой - этот файл содержит пароль. (используйте chmod 600 .fetchmailrc).

Создание файла .procmailrc

Этот управляющий файл будет пересылать всю почту пользователям, указанным в нем. Как описано выше, имеется два способа - 1), использующий строку заголовка "to:", и 2), использующий поле "subject". Файл будет содержать имя пользователя, которому надо отправлять сообщения. Все знаки "#" означают комментарий и абсолютно не нужны, когда это не требуется - они приведены только для того, чтобы вы знали, что я делал ... - вы также, с помощью chmod, должны установить на файл права (600), чтобы группа и остальные не знали о частных адресах эх :) ... Требуется также принадлежность этого файла пользователю (например, "mailservice") :)). Файл "nosuchuser" отсылает письмо назад автору - если пользователь не найден в файле procmailrc ... - это делается для того, чтобы автор письма знал, что письмо не дошло до получателя.


для способа A

"(*** < file > *** text ***) .procmailrc"

# эта строка только для отладочных целей ! удалите по этическим соображениям
# - т.к. вы можете читать всю почту, проходящую через ваш почтовый сервер ...
# - вся почта будет скопирована в файл "passtrough" до того, как
# попадет к пользователям ... здесь вы можете смотреть, что пошло не так ...
:0 c
        passtrough

# почта с заголовком "to: freaker@mydom.com" будет отправлена прямо
# ко мне, другая почта будет пропущена через эту проверку ...
:0
* ^To:.*freaker@mydom.com
! freaker

# почта для root@mydom.com будет отправлена к root'у ... и также к postmaster'у!
:0
* ^To:.*root@mydom.com
! root

:0
* ^To:.*postmaster@mydom.com
! postmaster


# почта для barbara@mydom.com будет отправлена к barbara И будет
# отправлена на ее собственный почтовый адрес !

:0 c
* ^To:.*barbara@mydom.com
! barbara@her.private.one

:0
* ^To:.*barbara@mydom.com
! barbara

# почта для johnny@mydom.com и johnny@hisdom.com will будет отправлена к johnny

:0
* (^To:.*johnny@mydom.com)|(^To:.*johnny@hisdom.com)
! johnny

# почта для hans@mydom.com и все точные копии будут отправлены к hans'у

:0
* (^To:.*hans@mydom.com)|(^CC:.*hans@mydom.com)
! hans

# эти строки будут возвращать почту отправителю - когда она не дойдет
# до кого-то из вышеупомянутых пользователей ...
# содержимое файла "nosuchuser" будет отправлено в теле письма ...
# знайте ! вам нужно сделать такой файл ! - файл содержит текст
# "Пользователь, которого вы ищете не на этом сервере, не найден.
# Пожалуйста, попробуйте снова, это мог быть пользователь, которого сейчас нет".
#
:0
  |(/usr/bin/formail -r -k \
     -A"X-loop: mailservice@mydomain.dom "| \
       /usr/bin/gawk '{print }\
       /^/ &!HEADER \
         { system("/bin/cat nosuchuser"); \
         print"--" ;\
         HEADER=1 }' ) |\
         /usr/bin/sendmail -t


exit


для способа B

"(*** < file > *** text ***) .procmailrc"

# эта строка только для отладочных целей ! удалите ее из этических соображений
# - т.к. вы можете читать всю почту,  проходящую через ваш почтовый сервер ...
# - вся почта будет скопирована в файл "passtrough" до того, как
# попадет к пользователям ... здесь вы можете смотреть, что пошло не так ...
:0 c
        passtrough

# почта с заголовком "to: freaker@mydom.com" будет отправлена прямо
# ко мне, другая почта будет пропущена через эту проверку ...
:0
* ^To:.*freaker@ibm.net
! freaker

# почта для root@mydom.com будет отправлена к root'у
:0
* ^Subject:.root
! root

# почта для barbara@mydom.com будет отправлена к barbara ...
:0
* ^Subject:.barbara
! barbara

# вся почта для "subject: paul" на его внешний почтовый адрес.
:0
* ^Subject:.paul
! paul@his.personal.emailaddress

# вся почта для "subject: john" будет отправлена на его учетную запись на вашем сервере
# и копия на его персональный почтовый адрес ...
:0 c
* ^Subject:.john
! john@his.personal.emailaddress

:0
* ^Subject:.john
! john

# Вся почта от ibm, с их обновлениями и информацией, будет отправлена к freaker'у,
# поскольку он будет управлять почтовым сервисом, и
# т.к. ibm не хочет, чтобы ей присылали уведомление, если письмо не дошло - об этом смотрите ниже!!
# ... это также необходимо, если ваш провайдер посылает вам письма с новостями и т.д. ...
:0
* ^From:.*newsletter@ibm.net
! freaker

# Все сообщения от демона будут отброшены, в моем случае, будут
# сохранены в файл ... (используйте /dev/null, чтобы удалить их)
:0
* ^FROM_DAEMON
throwaway

# эти строки будут возвращать почту отправителю - когда она не дойдет
# до кого-то из вышеупомянутых пользователей ...
# содержимое файла "nosuchuser" будет отправлено в теле письма ...
# знайте ! вам нужно сделать такой файл ! - файл содержит текст
# "Пользователь не найден в поле subject, пожалуйста, используйте  "Subject: user",
# чтобы послать письмо для user, например, "subject: freaker" пошлет
# почту для freaker." Файл может быть длинный, а может и короткий :) ...
# "mailservice@mydomain.dom" будет предотвращать циклирование между вашим сервером и
# другим сервером - для него требуется иметь ТОЧНЫЙ адрес электронной почты !.
# Иначе вы можете создать бесконечный цикл с сервером, который посылает почту
# на "ваш email" с темой письма типа "don't spend 500$
# at your ..." и т.п. ...
:0
  |(/usr/bin/formail -r -k \
     -A"X-loop: mailservice@mydomain.dom "| \
       /usr/bin/gawk '{print }\
       /^/ &!HEADER \
         { system("/bin/cat nosuchuser"); \
         print"--" ;\
         HEADER=1 }' ) |\
         /usr/bin/sendmail -t

exit



файл "nosuchuser"

"(*** < file > *** text ***) nosuchuser"

Пользователь, с которым Вы хотите связаться,
не зарегистрирован в этой системе.

Пожалуйста, используйте строку subject с именем получателя
- например, "subject: freaker" посылает почту freaker'у,
зарегистрированному в этой системе.

файлы "crontab"

Если вы не знаете, как работает crontab :), лучше почитать руководство :) ... Вам нужно создать файл "checkmail", который будет смотреть, если есть соединение с Интернет... - я использую ppp соединение :), Ниже приведен пример того, как, используя cron, проверять каждые 10 минут, имеется ли соединение ppp, и если оно есть, доставлять почту.


checkformail

Файл .checkformail будет вызываться (он должен быть исполняемым) - и будет проверять, есть ли ppp соединение. Если оно есть, то будет производиться доставка почты. Crontab будет использовать этот файл, если вы используете файл cronentry (см. ниже) ... the .checkformail file will be called (needs to be executable as well) - and will look if the ppp link is up. If it is up - then it will fetch for mail. Crontab will use this file when you are using the below cronentry ...

"(*** < file > *** code ***) .checkformail"

#!/bin/sh
#

        cd /home/mailservice

        if [ -f /var/run/ppp0.pid ]; then
        /usr/local/bin/fetchmail -s > /dev/null 2>&
        fi


crontab

Файл cronentry должен быть загружен в crontab. В результате этого, каждые 10 минут будет запускаться .checkformail. Он не будет посылать никакую почту и никакую информацию на экран - т.к. я все переадресовываю на устройство null.

"(*** < file > *** text ***) cronentry"

0,10,20,30,40,50 * * * *  /home/mailservice/.checkformail 1> /dev/null 2> /dev/null

На сайте администратора

При использовании способа "A" необходимо сделать следующее ... на администраторском сайте вся почта для вашего домена должна идти на одного пользователя. Это довольно просто, и как только вы сделали - это будет работать.

Это возможно только при использовании более-менее новой версии sendmail; старый sendmail, скорее всего, работать не будет. Почитайте в руководстве о том, как заставить работать перенаправление почты.


(старый sendmail) Добавьте некоторые строки в файл sendmail.cf

Добавте следующие строки в ваш файл /etc/sendmail.cf, таким образом будет прочитан файл доменов .

"(*** < file > *** add ***) /etc/sendmail.cf"

# База данных обработаных доменов

Kmaildomains btree /etc/maildomains.db

# Добавте эти строки *В* Ruleset 98 !

R$+ < @ $+  . >		$: $1 < @ $2 > .
R$+ < @ $+ > $*		$: $(maildomains $1@$2 $: $1 < @ $2 > $3 $)
R$+ < @ $+ > $*		$: $(maildomains $2 $: $1 < # $2 > $3 $)
R$+ < @ $* > .		$: $1 < @ $2 . >


(новый sendmail) Добавьте некоторые строки в файл sendmail.cf

Это работает с более новой программой sendmail (проверено с sendmail версий 8.8.7, 8.8.8). Игнорируйте способ A и добавьте следующие строки ...

"(*** < file > *** add ***) /etc/sendmail.cf"

# База данных обработаных доменов

Fw/etc/sendmail.cw
Kvirtuser btree /etc/maildomains.db

*OR*

Fw/yourhomedir/sendmail.cw
Kvirtuser btree /yourhomedir/maildomains.db


(новый sendmail) отредактируйте файл /etc/sendmail.cw (или /ваш_каталог/sendmail.cw)

Если ваш файл sendmail.cw расположен в другом месте, то замените "/etc/sendmail.cw" на "/ваш_каталог/sendmail.cw". Поместите этот файл в домашний каталог. Необязательно делать это под правами root'а. Более того, это может составить угрозу системе безопасности, если не используется должным образом!

Этот файл может уже существовать, или должен быть создан. Если он уже существует, убедитесь, что Вы не записываете поверх него другие данные - или можете почитать мою прекрасную оговорку (про ответственность) :)

Во-первых, создайте файл /etc/sendmail.cw, который будет использоваться, чтобы переслать почту, предназначенную домену, определенному пользователю ... имеется пример ... (как вы уже знаете, имя "mailservice" может быть любым, какое захотите - оно может быть даже вашим именем входа в системе (как мое - freaker).

"(*** < file > *** text ***) /etc/sendmail.cw"

mydomain.dom		mailservice


создание файла /etc/maildomains

Сначала создайте файл /etc/maildomains, который будет использоваться, чтобы переслать почту, предназначенную домену, определенному пользователю ... имеется пример ... (как вы уже знаете, имя "mailservice" может быть любым, какое захотите - оно может быть даже вашим именем входа (как мое - freaker). (поместите файл /etc/maildomains в каталог /ваш_домашний_каталог/maildomains, как сказано выше, лишь измените соответствующим образом пути :)

Со СТАРЫМИ версиями sendmail:

"(*** < file > *** text ***) /etc/maildomains"

mydomain.dom		mailservice

С более НОВЫМИ версиями sendmail:

"(*** < file > *** text ***) /etc/maildomains"

@mydomain.dom		mailservice


пусть работает !

Со старыми и новыми версиями sendmail Вы должны сгенерировать базу данных btree. Для этого сделайте следующее: With the old & new sendmail versionsyou need to generate the btree (database) files, you'll need to do the following:

cd /etc (or /yourhomedir) makemap btree maildomains < maildomains

и после этого перезапустите sendmail. Все должно РАБОТАТЬ ! удачи :)


Пред.НачалоСлед.
Требования Автоматизация
VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...