Недостаток использования метода аихргор для проверки пользователей состоит в том, что без дополнительных мер безопасности метод превращается в проверку
открытым текстом. Если вы входите на собственное рабочее место, это не является проблемой. Но если вы пересылаете свой пользовательский ID и пароль по сети открытым текстом, то любой сможет легко завладеть вашими личными данными.
В главе 2 мы обсуждали использование TLS, обновленной версии шифрования SSL для пересылки паролей вашего рабочего места на почтовый сервер безопасным образом. Здесь мы расширим решение по шифрованию идентификационной информации, создав сертификат с использованием OpenSSL.
Как и предыдущий, этот раздел касается безопасности, но с другой целью. В разделе SASL обсуждается аутентификация, определяющая, кто имеет право посылать почту через ваш сервер. Этот раздел касается защиты пароля, обеспечивающей то, что потенциальные злоумышленники не смогут завладеть личными данными пользователя. Для безопасности электронной почты вам требуются оба сервиса.
Начните с создания директории для сертификатов SSL. Сделайте ее подкаталогом в основном месте размещения Postfix на Debian:

# mkdir /etc/postfix/ssl # cd /etc/postfix/ssl/

Далее сгенерируйте два сертификата и два шифровальных ключа. Вам требуется личный ключ, не известный никому, кроме вас, и общий ключ, позволяющий другим пересылать секретные личные данные. Начните с ключа сервера:

# openssl genrsa des3 rand /etc/hosts out smtpd.key 1024

293 semirandom bytes loaded
Generating RSA private key, 1024 bit long modulus ++++++
++++++
e is 65537 (0x10001)
Enter pass phrase for smtpd.key:
Verifying Enter pass phrase for smtpd.key:
Измените права доступа к результирующему файлу, содержащему ключ сервера OpenSSL:

# chmod 600 smtpd.key

Далее сгенерируйте другой ключ и сертификат:

# openssl req new key smtpd.key out smtpd.csr

You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value.
If you enter '.', the field will be left blank.
Country Name (2 letter code) [AU]:
State or Province Name (full name) [SomeState]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]: centralsoft.org Organizational Unit Name (eg, section) []: web Common Name (eg, YOUR name) []:
Email Address []:
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []: cso
\ Ведутся споры относительно того, требуют ли самостоятельно сгенерированные сертификаты
J информацию, запрашиваемую в подсказках. Мы рекомендуем вам вводить информацию,
соответствующую вашему рабочему сайту.
Следующие команды генерируют ключ электронноцифровой подписи и меняют существующие ключи на новые:

# openssl х509 req days 3650 in smtpd.csr signkey smtpd.key out \ smtpd.crt

Signature ok
sub ject=/C=US/ST=Texas/L=Dal 1 as/Ocentral soft. org/OU=web/CN=Tom_Adel stei n/
emai1Address=tom.adelstei n@gmai1.com
Getting Private key
Enter pass phrase for smtpd.key:

# openssl rsa in smtpd.key out smtpd.key.unencrypted Enter pass phrase for smtpd.key:

writing RSA key

# mv f smtpd.key.unencrypted smtpd.key # chmod 600 smtpd.key # openssl req new x509 extensions v3_ca keyout cakey.pem out \ cacert.pem days 3650

Generating a 1024 bit RSA private key ++++++
++++++
writing new private key to 'cakey.pem'
Enter PEM pass phrase:
Verifying Enter PEM pass phrase:
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value.
If you enter '.', the field will be left blank
Country Name (2 letter code) [AU]:
State or Province Name (full name) [SomeState]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, YOUR name) []: Email Address []:
Теперь вы должны сообщить Postfix о своих ключах и сертификатах, используя команду postconf:

# postconf е 'smtpd_tls_auth_only no' # postconf e 'smtp_use_tls = yes' # postconf е 'smtpd_use_tls = yes' # postconf e 'smtptls_note_starttls_offer = yes' # postconf e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key' # postconf e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt' # postconf e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem' # postconf e 'smtpd_tls_loglevel = 1' # postconf e 'smtpd_tls_received_header = yes' # postconf e 'smtpdjtls_session_cache_timeout = 3600s' # postconf e 'tls_random_source dev:/dev/urandom'

Файл /etc/postfi x/mai n. cf теперь должен выглядеть следующим образом:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version smtpd_banner = Smyhostname ESMTP $mail_name (Debian/GNU)

biff = no

# appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h

myhostname = serverl.example.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname
mydestination = serverl.example.com, localhost.example.com. localhost relayhost
mynetworks = 127.0.0.0/8 mail box_command = procmail a "JEXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes
smtpd_reci pi ent_restri cti ons = permi t_sasl_authenti cated.permi tjnynetworks.reject_
unauth_destination
smtpd_tls_auth_only = no
smtp_use_tls = yes
mtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_fi1e = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfi1e = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout 3600s
tls_random_source = dev:/dev/urandom
Теперь вы можете перезапустить демон Postfix:

# /etc/init.d/postfix restart

Stopping mail transport agent: Postfix. Starting mail transport agent: Postfix.