Содержание материала

Последняя из добавленных нами в исходный файл т4 возможностей - FE- ATURE (genericstable) - включает процесс работы с базой данных в задачу преобразования электронного адреса (регистрационного имени пользовате- ля в имя и фамилию пользователя). Чтобы повторить здесь те же действия, создайте текстовый файл регистрационных имен и имен/фамилий пользова- телей. На основе этого файла создается база данных посредством makemap.

# cd /etc/mail 
# cat realnames 
dan Dan.Scribner 
tyler Tyler.McCafferty 
pat Pat.Stover 
willy Bill.Wright 
craig Craig.Hunt 
# makemap hash realnames < realnames

Когда база данных создана, создайте определения для sendmail. С этой целью воспользуйтесь командой К. Чтобы воспользоваться только что соз- данной нами базой данных, добавьте следующие строки в раздел локальной информации (Local Information) файла sendmail.cf:

# define a database to ma p login names to firstname.lastname 
Krealnames hash /etc/mail/realnames

Команда К определяет realnames в качестве внутреннего имени sendmail для этой базы данных. Кроме того, она указывает, что база данных имеет тип hash, а ее полное имя - /etc/realnames. sendmail добавляет к именам файлов баз данных нужные расширения исходя из их типа, так что о расширениях можете не беспокоиться.

Наконец, мы добавляем новое правило, в котором база данных используется для перезаписи адресов. Добавляем мы его в наборы правил EnvFromSMTP и HdrFromSMTP - сразу после строк в этих наборах, вызывающих набор MasqHdr. В этом случае наше новое правило обрабатывает адрес сразу после того, как закончится его обработка набором правил MasqHdr.

# when masquerading convert login name to firstname.lastname 
R$-<@$M.>$* $:$(realnames $1 $)<@$M.>$2 user=>first.last

Данное правило обрабатывает вывод набора правил MasqHdr, отвечающего за перезапись раздела узла в адресе.


Адреса, соответствующие условиям перезаписи раздела узла, также должны подвергаться перезаписи раздела пользователя. Взгляните на вывод набора правил MasqHdr из приведенного ранее теста. Адрес craig<@wrotethebook.com.> соответствует шаблону $-<@$М >$*. В адресе ровно одна лексема (craig) перед литералом <@, за которым следует значение М (wrotethebook.com), литерал .>, а затем нулевое число лексем.

Секция преобразования этого правила использует первую лексему ($1) исходного адреса в качестве ключа базы данных realnames, на что указывает синтакси с $:$( realnames $ 1 $) . Дл я адрес а craig<@wrotethebook.com> $ 1 имеет значение craig. Запрос по этому индексу, обращенный к базе данных realnames, приводимой в начале данного раздела, возвращает значение Crаig.Hunt. Это значение предваряет литерал <@, значение макроопределения М ($М) , литерал .>, а также значение $2, как предписывается секцией преобразования <@$М. >$2. В результате действия этого нового правила регистрационное имя пользователя в адресе преобразуется в настоящее имя и фамилию пользователя.

Когда это правило добавлено в наборы EnvFromSMTP и HdrFromSMTP, тест дает следующие результаты:

# sendmail -bt -Ctest.cf
AODRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>    /tryflags HS
>    /try esmtp craig
Trying header sender address craig for mailer esmtp
canonify    input:    craig            
Canonify2    input:    craig            
Canonify2    returns:    craig            
canonify    returns:    craig            
1    input:    craig            
1    returns:    craig            
HdrFromSMTP    input:    craig            
PseudoToReal    input:    craig            
PseudoToReal    returns:    craig            
MasqSMTP    input:    craig            
MasqSMTP    returns:    craig    <    e * LOCAL* >    
MasqHdr    input:    craig    <    @ *LOCAL* >    
MasqHdr    returns:    craig    <    @ wrotethebook . com    >
HdrFromSMTP    returns:    Craig        Hunt < @ wrotethebook    . com
final    input:    Craig        Hunt < @ wrotethebook    . com
final    returns:    Craig        Hunt @ wrotethebook .    com
Rcode =0, addr    = Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.                
>    /tryflags ES
>    /try esmtp craig
Trying envelope sender address craig for mailer esmtp
canonify    input:    craig        
Canonify2    input:    craig        
Canonify2    returns:    craig        
canonify    returns:    craig        
1    input:    craig        
1    returns:    craig        
EnvFromSMTP    input:    craig        
PseudoToReal    input:    craig        
PseudoToReal    returns:    craig        
MasqSMTP    input:    craig        
MasqSMTP    returns:    craig    <    0 *LOCAL* >
MasqEnv    input:    craig    <    @ *LOCAL* >
MasqHdr    input:    craig    <    * LOCAL* >
MasqHdr    returns:    craig    <    @ wrotethebook . com . >
MasqEnv    returns:    craig    <    @ wrotethebook . com . >
EnvFromSMTP    returns:    Craig        Hunt < @ wrotethebook . com . >
final    input:    Craig        Hunt < @ wrotethebook . com . >
final    returns:    Craig        Hunt @ wrotethebook . com
Rcode = 0, addr = Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
> /quit

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

test.cf : line 116: readcf: ma p realnames: class hash not available

Сообщение свидетельствует о том, что ваша система не поддерживает ассоциативные базы данных. Можно попробовать изменить тип базы данных в строке команды К и повторно выполнить sendmail -bt, пока не будет найден тип, с которым работает sendmail. В этом случае необходимо также повторно выполнить makemap для каждого нового типа базы данных. Если ваша версия sendmail не поддерживает никакие типы баз данных, обратитесь к приложению Е за информацией о перекомпиляции sendmail с поддержкой баз данных.

Обратите внимание, что все изменения, вносимые непосредственно в sendmail.cf во второй половине этой главы (сокрытие адреса отправителя, сокрытие адреса конверта, преобразование имен пользователей), в исходном файле m4 отражены всего лишь тремя строками. Эти примеры демонстрируют использование инструментов тестирования sendmail. Если вам действительно нужны новые, специальные настройки, воспользуйтесь m4. Настройки sendmail проще всего сопровождать и развивать посредством исходного файла m4.

Обмениваться, хранить, передавать Ваши файлы стало просто как никогда.
yandex-disk
Читать подробнее: для чего Yandex-Диск проекту Mini-Server. Практика установки, настройки и использования сетевого хранилища на Ubuntu server LTS 12.04 в статье Резервное копирование сервера Ubuntu на Яндекс Диск.

>> Ubuntu 12.04 + Nginx Скачать сервер
>> Fedora 15 Скачать сервер
>> Простой Debian 6.0.6 Скачать сервер
>> CentOS 6.0 и
+ (5.6) другой
Скачать сервер
>> OpenSUSE 11.4
MAX
Скачать сервер

Вход на сайт

ВНИМАНИЕ!

Регистрация на сайте только по согласованию с администратором ресурса. Обращаться через форму обратной связи.