Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
Эта заметка доступна на: English  Castellano  Deutsch  Francais  Italiano  Nederlands  Russian  Turkce  

[Фото автора]
Автор John Perr

Об авторе:

Пользователь ОС Linux с 1994 г.; один из редакторов французской секции LinuxFocus.


Содержание:

Sendmail and Fetchmail: локальный почтовый сервер

[Иллюстрация]

Резюме:

Заметка рассказывает о конфигурировании sendmail и fetchmail на компьютере, использующем интернет через PPP соединение. Такая конфигурация позволяет использовать любой почтовый клиент Unix (не только Netscape). Отправлять и принимать сообщения возможно при каждом PPP соединении.



 

Введение

Для управления почтой необходимо сконфигурировать MTA (Mail Transfer Agent). Самый популярный (и давно используемый) - sendmail, но существуют и другие : более быстрый и простой в конфигурировании qmail и exim, входящий в стандартные дистрибутивы Debian. В заметке рассмотрим sendmail и конфигурационный пакет из Университета Беркли от Eric Allman.
Для получения почты от ISP (Internet Service Provider) необходимо настроить fetchmail, использующий протоколы pop3 или imap. Можно также использовать uucp, но в рамки заметки не входит рассмотрение данного протокола.  

Настройка

Для настройки sendmail необходимо установить следующие пакеты (rpm формат):

Имена пакетов и номера версий могут различаться в зависимости от используемого дистрибутива. Наиболее важные первые два пакета.

Используйте следующие рекомендации для настройки :

  1. во - первых мы принимаем, что:
  2. Создайте файл : /usr/lib/sendmail-cf/cf/config.mc
    # start of config.mc
    include(`../m4/cf.m4')dnl
    OSTYPE(`linux')dnl
    define(`SMTP_MAILER_FLAGS', `e9')dnl
    FEATURE(redirect)dnl
    FEATURE(nocanonify)dnl
    FEATURE(always_add_domain)dnl
    FEATURE(local_procmail)dnl
    GENERICS_DOMAIN(localhost.localdomain localhost localhost)
    FEATURE(genericstable)
    FEATURE(masquerade_envelope)dnl
    define(`confCF_VERSION',`dede's cf - 22/05/98')dnl
    define(`confCON_EXPENSIVE',`True')dnl
    define(`confME_TOO',`True')dnl
    define(`confCOPY_ERRORS_TO',`Postmaster')dnl
    define(`confDEF_CHAR_SET',`ISO-8859-1')dnl
    define(`confMIME_FORMAT_ERRORS',`True')dnl
    define(`SMART_HOST',`smtp8:[smtp.isp.net]')dnl
    define(`confTO_QUEUEWARN',`24h')
    MAILER(local)
    MAILER(smtp)
    # End of config.mc
    

    Строка define(`SMART_HOST'.... конфигурирует sendmail для отправки всей внешней почты через ISP вместо прямой доставки.
  3. Также создайте файл /etc/genericstable:
    dede:   [email protected]
    root:   [email protected]
    news:   [email protected]
    
  4. Проверьте, что /etc/alias содержит строки :
    MAILER-DAEMON:  postmaster
    postmaster:     root
    
  5. Измените или создайте файл /etc/nsswitch.conf как показано ниже:
    passwd:     files  
    shadow:     files  
    group:      files  
    hosts:      files   dns
    services:   files
    networks:   files
    protocols:  files
    rpc:        files
    ethers:     files
    netmasks:   files     
    bootparams: files
    netgroup:   
    publickey:  
    automount:  files 
    aliases:    files 
    
    (Каждая запись, кроме "host", должна содержать только "files")

  6. Создайте /etc/sendmail.cf :
    m4 config.mc > /etc/sendmail.cf
    с правами доступа :
    -rw------- 1 root root 26468 mai 12 22:52 /etc/sendmail.cf

  7. Создайте базу преобразования адресов :
    /usr/bin/sendmail -bi -oA/etc/genericstable
    Файл /etc/genericstable.db должен быть создан.

  8. Перечитайте таблицу псевдонимов :
    newaliases

  9. Файл /etc/hosts должен содержать следующую строку:
    127.0.0.1 localhost.localdomain localhost localhost

  10. Перезагрузите sendmail :
    kill `head -1 /var/run/sendmail.pid`
    /usr/bin/sendmail -bd -os
     

    Тестирование sendmail

    Настройка sendmail закончена. Теперь проведем тестирование, чтобы быть уверенными, что все работает :
    Создайте файл test.mail :

    Subject: test local
    first line of my message
    (пустая строка обязательна)


    и выполните :
    /usr/bin/sendmail -v dede < test.mail

    На экране должны появиться следующие строки :

    dede... Connecting to local
    dede... Sent
    

    Загрузите почтовую программу и проверьте почту.

    Настройка Netscape для чтения локальной почты:


    Можно использовать команду chmod 777, но в этом случае могут возникнуть проблемы с безопасностью данных. Команда chmod 1777 означает, что только владелец файла может удалить его, а не все, кто имеет право записи в каталог.

    Теперь ваш компьютер доставляет почту непосредственно Netscape, даже если вы не связываетесь с Internet. Конечно, возможно использование и других почтовых клиентов : XFmail, emacs, mutt, pine etc...  

    Настройка fetchmail

    Перед использованием нашего нового почтового сервера в Internet,необходимо настроить fetchmail для получения почты от ISP:
    Создайте файл .fetchmailrc в /home/dede:

    poll pop.isp.net protocol POP3
            user toto is dede 
            password XXXXXXX
    

    где toto и XXXXX ваш логин и пароль для регистрационной записи на pop3.isp.net. При наличии нескольких почтовых ящиков - создайте подобную строку для каждого.
    Для корректной работы fetchmail необходимо установить следующие права доступа для файла .fetchmailrc :

    -rw-------   1 dede   dede   189 oct  6 21:45 /home/dede/.fetchmailrc
    

    Для тестирования в Internet выполните следующие действия :

    Оно появится в почтовой очереди когда вы выполните команду : mailq. Далее подключитесь к ISP и отправьте сообщение.
    /usr/bin/sendmail -q
    

    Команда sendmail -q отправляет сообщение, находящееся в очереди. Через некоторое время загрузите fetchmail и примите сообщение, пришедшее зеркального почтового адреса. После получения всех сообщений можно прервать связь.  

    Автоматизация

    После окончательной установки настроим автоматическое выполнение для каждого соединения.

    При использовании PPP - соединения файлы /etc/ppp/ip-up и ip-down исполняются каждый раз при установлении или прекращении сеанса связи. Убедитесь, что следующие строки присутствуют в файлах, если нет - создайте их :
    [ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local $*
    В файл /etc/ppp/ip-up добавляется :
    [ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local $*

    Далее файлы /etc/ppp/ip-up и ip-down загружают файлы ip-up.local и ip-down.local :

    #!/bin/bash
    # /etc/ppp/ip-up.local
    
    #Record connection parameters
    echo `date` $4 $5 ppp-on >> /etc/ppp/history
    tail -n 1 connect-errors >> /etc/ppp/history
    
    # Send waiting mail
    echo Sending mail... > /dev/console
    /usr/sbin/sendmail -q
    echo Mail sent.  > /dev/console
    
    # Get mail waiting on the pop server
    echo Getting mail... > /dev/console
    fetchmail  > /dev/console 2>&1
    echo Got mail.  > /dev/console
    
    #End
    exit 0
    # end of /etc/ppp/ip-up.local
    

    Основными являются строки sendmail -q и fetchmail. Остальные выводят сообщения о получении почты на консоль и ведут запись соединений в файле /etc/ppp/history.

    #!/bin/bash
    # /etc/ppp/ip-down.local
    
    #Record connection parameters
    echo `date` ppp-off >> /etc/ppp/history
    
    #end
    exit 0
    # end of /etc/ppp/ip-down.local
    

    Эти файлы исполняются с привилегией root, поэтому необходимо создать копию файла .fetchmailrc в папке /root.

    При наличии постоянного соединения с Internet можно настроить sendmail таким образом, чтобы отправка почты осуществлялась регулярно :
    Команда sendmail -bd -q10m для отправки почты каждые 10 минут.
    Для получения почты каждые 10 минут (600 секунд) необходимо выполнить команду : fetchmail -d 600

    Обычно эти команды выполняются в загрузочных файлах в каталогах /etc/rc или /etc/rc.d/ (в зависимости от конфигурации).  

    Заключение

    В данной конфигурации почта отправляется из очереди и принимается от ISP. Можно использовать программы (например : xbiff or xmailbox) для оповещения о наличии почты. Почту можно сортировать и фильтровать программой procmail. Об этом можно прочитать в заметке написанной Angel Lopez в Ноябрьском (1997 г.) выпуске журнала.  

    Ссылки

    Документация по sendmail и fetchmail :
    Webpages maintained by the LinuxFocus Editor team
    © John Perr
    LinuxFocus.org 2000

    Click here to report a fault or send a comment to Linuxfocus
    Translation information:
    fr -> -- John Perr
    fr -> en John Perr
    en -> ru Kirill Poukhliakov

    2000-07-05, generated by lfparser version 1.5