Bahay Dentistry Punctual inurl sendmail php. Pagpapadala ng mga email gamit ang php

Punctual inurl sendmail php. Pagpapadala ng mga email gamit ang php

Ang pag-uugali ng mga function na ito ay apektado ng mga setting sa php.ini .

Mga opsyon sa pagsasaayos ng mail
Pangalan Default Nababago Changelog
mail.add_x_header "0" PHP_INI_PERDIR Available simula PHP 5.3.0.
mail.log NULL PHP_INI_PERDIR Available simula PHP 5.3.0. (PHP_INI_SYSTEM|PHP_INI_PERDIR)
mail.force_extra_parameters NULL PHP_INI_PERDIR Available simula PHP 5.0.0. (PHP_INI_SYSTEM|PHP_INI_PERDIR)
SMTP "localhost" PHP_INI_ALL
smtp_port "25" PHP_INI_ALL
sendmail_from NULL PHP_INI_ALL
sendmail_path "/usr/sbin/sendmail -t -i" PHP_INI_SYSTEM
Para sa karagdagang mga detalye at mga kahulugan ng PHP_INI_* mode, tingnan ang .

Narito ang isang maikling paliwanag ng mga direktiba sa pagsasaayos.

Idagdag X-PHP-Originating-Script na magsasama ng UID ng script na sinusundan ng filename.

Mail.log string

Ang path sa isang log file na magla-log sa lahat mail() mga tawag. Kasama sa mga entry sa log ang buong landas ng script, numero ng linya, Upang

address at mga header. string

Mail.force_extra_parameters Pilitin ang pagdaragdag ng mga tinukoy na parameter na ipasa bilang mga karagdagang parameter sa binary ng sendmail. Ang mga parameter na ito ay palaging mail() palitan ang halaga ng 5th parameter sa

, kahit na nasa safe mode. string

SMTP mail() Ginagamit lamang sa ilalim ng Windows: host name o IP address ng SMTP server na dapat gamitin ng PHP para sa mail na ipinadala kasama ng

function. Smtp_port

int SMTP Ginagamit lamang sa ilalim ng Windows: Bilang ng port upang kumonekta sa server na tinukoy sa mail() setting kapag nagpapadala ng mail gamit ang

; default sa 25. string

Sendmail_from Alin"Mula kay:" dapat gamitin ang mail address sa mail na ipinadala mula sa PHP sa ilalim ng Windows. Itinatakda din ng direktiba na ito ang

"Path-Return:" string

header. Sendmail_path Kung saan ang sendmail Maaaring matagpuan ang program, kadalasan /usr/sbin/sendmail o /usr/lib/sendmail . i-configure ay isang tapat na pagtatangka na hanapin ang isang ito para sa iyo

at itakda Sendmail_path dapat itakda ang direktiba na ito sa sendmail wrapper/kapalit na inaalok ng kanilang mail system, kung mayroon man.

Halimbawa, » karaniwang maaaring itakda ito ng mga gumagamit ng Qmail sa /var/qmail/bin/sendmail o /var/qmail/bin/qmail-inject . qmail-inject

hindi nangangailangan ng anumang opsyon upang maiproseso nang tama ang mail.

Gumagana rin ang direktiba na ito sa ilalim ng Windows. Kung itinakda, ang smtp , smtp_port at sendmail_from ay babalewalain at ang tinukoy na utos ay ipapatupad.

5 taon na ang nakalipas

Sa Ubuntu 13.04, hindi sigurado sa iba pang mga Distro.

Kung i-uncomment mo lang ang default:

sendmail_path = "sendmail -t -i"

Mabibigo lahat ang iyong mail() function. Ito ay dahil, dapat mong ilagay ang BUONG PATH (i.e. /usr/sbin/sendmail -t -i)

Sinasabi ng dokumentasyon na sinusubukan ng PHP na mahanap ang tamang landas ng sendmail, ngunit malinaw na nabigo ito para sa akin.

Kaya, palaging pumasok sa FULLPATH upang magpadala ng mail o maaari kang makakuha ng hindi inaasahang mga hindi inaasahang resulta.

Bilang pangalawang tala: Ang mga nais lamang na IPATUPAD ang -f parameter, magagawa mo ito sa php.ini gamit ang: mail.force_extra_parameters =

[email protected]

Maaari mong iwanang nagkomento ang landas ng sendmail, gagamitin pa rin nito ang mga default (sa ilalim ng mga pagpipilian sa UNIX -t -i na kung titingnan mo ang mga ito ay napakahalagang maitakda)....

Ngunit, ngayon ay walang paraan upang baguhin ito, kahit na sa ika-5 argumento ng mail() function. -f ay mahalaga, dahil kung HINDI nakatakda, ay itatakda sa kung sinong gumagamit ang PHP script ay tumatakbo sa ilalim, at maaaring hindi mo gusto iyon. Gayundin, itinatakda ng -f ang Return-Path: header na ginagamit bilang Bounce address, kung may mga error, para maproseso mo ang mga ito. Ikaw ikaw

hindi maaaring itakda ang Return-Path: sa mail() na mga header para sa ilang kadahilanan... magagawa mo noon. Ngayon ay kailangan mong gamitin ang -f na opsyon.

2 taon na ang nakalipas
Kung sinuman ang nakakakuha ng misteryosong mensahe ng error na ito sa mga log ng error sa PHP:
"sh: -t: command not found"

pagkatapos mag-upgrade mula sa PHP 5.4, maaaring ito ang solusyon para sa iyo.

Nag-upgrade ako ng PHP mula 5.4 hanggang 5.6 at lahat ng aming mail() na pag-andar ay biglang nasira, nang walang kapaki-pakinabang na pag-log ng error.

ini file; hindi na ito papansinin kung gagamit ka ng ini_set() para tumukoy ng path sa sendmail binary on the fly.

Kaya, tukuyin lamang ang "sendmail_path" sa php.ini sa halip. Iyon lang ang nariyan -- na nag-ayos ng lahat ng pagpapagana ng mail() para sa amin.

Sana ang maliit na tala na ito ay nakakatipid ng ibang tao gaya ng ginugol ko sa pag-troubleshoot at pagsasaliksik. Cheers!

3 taon na ang nakalipas

Pagtatakda ng landas ng pagbabalik:

Ang header ng return-path ay hindi gumagana dahil hindi ito bahagi ng smtp.
Sa *nix -f ay maaaring itakda sa mail command
bilang kahalili
tandaan: walang tutuldok pagkatapos ng "Mula kay" , dapat ang unang linya ng header
o maaari mong muling i-configure ang iyong MTA upang bigyang-kahulugan ang mga header ng return-path

Ang F ay ang pinaka-maaasahang paraan ngunit maaaring nangangahulugan ito na hindi ka makakapagtakda ng anumang iba pang opsyon sa command-line dahil sa mga problema sa pagtakas ng shell.

tandaan din na ang mga kinakailangan sa pag-format ng email ay naiiba sa pagitan ng mga bintana at lahat ng iba pa. Inaasahan lamang ng sendmail ang \n mga linyang pagtatapos

Nag-set up ako kamakailan ng isang home server, at kailangan kong subukan ang pagpapadala ng mail doon. Ngunit narito ang problema: kapag humihiling ng page na nagpapadala ng mail, lumitaw ang isang 500 error.

Problema

Sinimulan kong tingnan kung ano ang nangyayari. Walang kawili-wili sa mga log ng php-fpm; sa mga log ng nginx makikita mo na nag-crash ang php-fpm upstream dahil sa isang timeout.

2013/04/18 15:28:01 6928#0: *1409 upstream timed out (110: Connection timed out) habang binabasa ang response header mula sa upstream, client: xx.xx.xx.xx, server: , request: "POST /page.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9010", host: "site.ru", referrer: "http://site.ru"

At pagkatapos ay pumasok sa isip ko ang ideya na tingnan ang syslog. Doon ay nakakita ako ng mga kawili-wiling linya:

Set 9 18:53:20 mega sm-msp-queue: Ang aking unqualified host name (mega) unknown; sleeping for retry Set 9 18:54:20 mega sm-msp-queue: hindi ma-qualify ang sarili kong domain name (mega) -- gamit ang maikling pangalan

Oo, nagsimula akong magkasala sa direksyon ng sendmail. Sinusubukan kong i-restart ito gamit ang utos:

Sudo service sendmail restart

at nakikita ko ang kumpirmasyon ng aking hula.

Andrey@mega:/home/andrey# sudoservice sendmail i-restart sudo: hindi malutas ang host xyz.xyz * I-restart ang Mail Transport Agent (MTA) sendmail andrey@mega:/home/andrey#

Solusyon

Ang problema pala ay ang pangalan ng server. Pagkatapos kong itakda ang pangalan ng server tulad nito (na may tuldok), lahat ay gumana ayon sa nararapat.

127.0.0.1 localhost localhost.localdomain mega mega.foobar

salamat po!

Kung nakatulong sa iyo ang artikulo, o gusto mong suportahan ang aking pananaliksik at blog - dito pinakamahusay na paraan gawin ito:

Sa tuwing magse-set up ako ng isang lokal na web server, nahaharap ako sa isang tanong tungkol sa isang stub para sa Sendmail.

Mayroong isang mahusay na solusyon para sa Windows: pekeng sendmail para sa mga bintana(sendmail.exe) http://glob.com.au/sendmail/
Mayroong isang artikulo sa Habré tungkol sa solusyon na ito: PHP mail para sa Windows http://habrahabr.ru/post/26518/
Isa pang solusyon para sa Windows: Subukan ang Mail Server Tool http://www.toolheap.com/test-mail-server-tool/
Mayroon ding isang artikulo para sa mga gumagamit ng Linux: Sendmail stub para sa Linux http://habrahabr.ru/post/49665/

Sa personal, mas nagustuhan ko ang solusyon sa purong PHP, na tatalakayin pa.

Ang kakaiba ng solusyon na ito ay ang pagsasaayos nito ay minimal; maaari mo ring gawin nang wala ang file mismo, maliban kung siyempre kailangan mong malaman ang mga nilalaman ng mensahe. Sa palagay ko, sulit ang pamamaraang ito kung alam ito ng ibang mga developer ng PHP.

Ang tanong ay kung ano ang iyong mga priyoridad bilang isang developer, ang iyong mga pangangailangan mula sa stub, at ang iyong antas ng kaalaman at kasanayan.

Mga kalamangan:

  • Walang mga serbisyo ng third party
  • Cross-platform na solusyon para sa OS kung saan naka-install ang PHP
  • Minimum na laki ng stub file
  • Minimal na setup
  • Lahat ng stub logic ay mae-edit sa PHP
  • Nagse-save ng mensahe sa isang file

Sa mga minus:

  • Walang pagpapasa sa isang tunay na mailbox
  • Kakulangan ng maginhawang pag-access sa mga ipinadalang mensahe

Listahan ng mga argumento at kakayahan ng stub:

  • --dir<Путь к папке> - File folder
  • --file<имя файла> - I-save ang bawat mensahe sa isang partikular na nakabahaging file
  • --prepend- Magdagdag ng bagong mensahe sa simula ng nakabahaging file
  • --bukas- Awtomatikong buksan ang file ng mensahe sa Notepad

Mga parameter para sa PHP.INI file:

;SMTP = localhost ;smtp_port = 25 ;sendmail_from = mail.force_extra_parameters = sendmail_path = "php.exe C:\sendmail.php --dir C:\mail --open"

Kung ang path sa php.exe ay tinukoy sa PATH, hindi mo na kailangang tukuyin ito sa PHP.INI, kung hindi, ipinapayong baguhin ang php.exe sa<Путь к папке с PHP>\php.exe

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php --dir C:\mail --open"

Sa Linux, maaari mong agad na tukuyin ang landas patungo sa file, hindi nakakalimutang gawin muna itong mailunsad: chmod 755 sendmail.php
sendmail_path = "/home/someuser/sendmail.php --dir /tmp/mail"

Ang sendmail.php script mismo:

#!/usr/bin/env php

Tulad ng ipinangako ko, mayroon ding pagpipilian na gawin nang walang file nang buo.

Sendmail_path = "C:\server\bin\php\php.exe -r "echo 1;""

O gumamit ng pinasimple na solusyon

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php"

sendmail.php:

#!/usr/bin/env php

Ako ay natutuwa kung ito ay kapaki-pakinabang sa iyo.

Sa tuwing magse-set up ako ng isang lokal na web server, nahaharap ako sa isang tanong tungkol sa isang stub para sa Sendmail.

Mayroong isang mahusay na solusyon para sa Windows: pekeng sendmail para sa mga bintana(sendmail.exe) http://glob.com.au/sendmail/
Mayroong isang artikulo sa Habré tungkol sa solusyon na ito: PHP mail para sa Windows
Isa pang solusyon para sa Windows: Subukan ang Mail Server Tool http://www.toolheap.com/test-mail-server-tool/
Mayroon ding isang artikulo para sa mga gumagamit ng Linux: Sendmail stub para sa Linux

Sa personal, mas nagustuhan ko ang solusyon sa purong PHP, na tatalakayin pa.

Ang kakaiba ng solusyon na ito ay ang pagsasaayos nito ay minimal; maaari mo ring gawin nang wala ang file mismo, maliban kung siyempre kailangan mong malaman ang mga nilalaman ng mensahe. Sa palagay ko, sulit ang pamamaraang ito kung alam ito ng ibang mga developer ng PHP.

Ang tanong ay kung ano ang iyong mga priyoridad bilang isang developer, ang iyong mga pangangailangan mula sa stub, at ang iyong antas ng kaalaman at kasanayan.

Mga kalamangan:

  • Walang mga serbisyo ng third party
  • Cross-platform na solusyon para sa OS kung saan naka-install ang PHP
  • Minimum na laki ng stub file
  • Minimal na setup
  • Lahat ng stub logic ay mae-edit sa PHP
  • Nagse-save ng mensahe sa isang file

Sa mga minus:

  • Walang pagpapasa sa isang tunay na mailbox
  • Kakulangan ng maginhawang pag-access sa mga ipinadalang mensahe

Listahan ng mga argumento at kakayahan ng stub:

  • --dir<Путь к папке> - File folder
  • --file<имя файла> - I-save ang bawat mensahe sa isang partikular na nakabahaging file
  • --prepend- Magdagdag ng bagong mensahe sa simula ng nakabahaging file
  • --bukas- Awtomatikong buksan ang file ng mensahe sa Notepad

Mga parameter para sa PHP.INI file:

;SMTP = localhost ;smtp_port = 25 ;sendmail_from = mail.force_extra_parameters = sendmail_path = "php.exe C:\sendmail.php --dir C:\mail --open"

Kung ang path sa php.exe ay tinukoy sa PATH, hindi mo na kailangang tukuyin ito sa PHP.INI, kung hindi, ipinapayong baguhin ang php.exe sa<Путь к папке с PHP>\php.exe

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php --dir C:\mail --open"

Sa Linux, maaari mong agad na tukuyin ang landas patungo sa file, hindi nakakalimutang gawin muna itong mailunsad: chmod 755 sendmail.php
sendmail_path = "/home/someuser/sendmail.php --dir /tmp/mail"

Ang sendmail.php script mismo:

#!/usr/bin/env php

Tulad ng ipinangako ko, mayroon ding pagpipilian na gawin nang walang file nang buo.

Sendmail_path = "C:\server\bin\php\php.exe -r "echo 1;""

O gumamit ng pinasimple na solusyon

Sendmail_path = "C:\server\bin\php\php.exe C:\sendmail.php"

sendmail.php:

#!/usr/bin/env php

Ako ay natutuwa kung ito ay kapaki-pakinabang sa iyo.

Sergey Suprunov

Paano gumagana ang Sendmail? Mga kapaki-pakinabang na detalye

Bahagi 4: Pakikipag-ugnayan sa mga programang third-party

Ang kawan at ang ama ay mabait sa iyo.

Karunungan ng magkakapatid na tao

Gaano man ka-flexible at functional ang Sendmail, ang mga kakayahan nito ay hindi palaging sapat upang malutas ang buong iba't ibang mga problema. Ngunit ang magandang bagay tungkol sa pagiging bukas ng software ay pinapayagan ka nitong dagdagan ang kapangyarihan nang halos walang mga paghihigpit.

Walang masyadong proteksyon

Sendmail, tulad ng ipinapakita sa mga nakaraang bahagi ng artikulo (No. 5, 6, 7 para sa 2006 - ; http ://www. samag. ru/ cgi-bin/ go. pl? q= mga artikulo; n=06.2006; a=02; ), ay nagbibigay-daan, gamit ang mga aliases file o custom na .forward na mga file, na i-redirect ang mga papasok na mensahe para sa pagproseso ng mga third-party na programa. Ang mekanismo mismo ay medyo simple: ang liham sa orihinal nitong format ay ipinadala sa karaniwang input (stdin) ng tinukoy na programa o script, na pagkatapos ay pinoproseso ito. Ang isang simpleng halimbawa ng pagpapatupad ng gayong senaryo sa Python ay makikita sa artikulong “Python Workshop: Processing Incoming Email” (No. 2, 2006 – http ://www. samag. ru/ cgi-bin/ go. pl? q= mga artikulo; n=02.2006; a=01).

Gayunpaman, mayroong isang potensyal na problema sa seguridad dito - kung ang gumagamit ay may kakayahang independiyenteng tukuyin ang anumang mga programa bilang mga tagapangasiwa ng mail, palaging may posibilidad na gagamitin niya ito sa hindi awtorisadong tawag sa isang programa kung saan siya ay karaniwang hindi magkakaroon ng access ( halimbawa, hindi binibigyan ng access ang command shell, ngunit posibleng gumawa ng mga pagbabago sa .forward na file sa pamamagitan ng web interface). Siyempre, pinapaliit ng Sendmail ang negatibong epekto ng tampok na ito sa pamamagitan ng pagpapatakbo ng prosesong gumagawa ng pagproseso na ito sa ngalan ng user na nagmamay-ari ng .forward na file. Ngunit hindi natin dapat kalimutan na maaaring may mga maipapatupad na file sa system na may set ng suid bit, na sa ilang mga kaso ay maaaring humantong sa mga kakila-kilabot na kahihinatnan...

Upang malutas ang problemang ito, maaaring i-configure ang Sendmail upang gumana sa isang "restricted shell para sa sendmail" - smrsh. Ang kakaiba ng shell na ito ay pinapayagan ka nitong magpatakbo ng mga programa lamang mula sa sarili nitong direktoryo sa mga sistema ng FreeBSD, bilang default ito ay /usr/libexec/sm.bin (maaari mong baguhin ito sa pamamagitan ng muling pag-compile ng utility gamit ang -DSMRSH_CMDDIR flag) .

Pinakamainam na makita kung paano ito gumagana sa isang halimbawa (pagkatapos ng -c switch ay ipinahiwatig ang pangalan ng program na isinasagawa):

#pwd

/usr/libexec/sm.bin

# ls –l

kabuuang 0

# /usr/libexec/smrsh -c w

10:01AM hanggang 20 araw, 21:44, 1 user, mga average ng load: 0.00, 0.02, 0.00

USER TTY MULA SA LOGIN@ IDLE ANO

serg p0 curs3.myserver. 8:48AM - /usr/libexec/sm.bin/w

# /usr/libexec/smrsh -c sino

/usr/libexec/smrsh: "sino" ang hindi magagamit para sa mga programang sendmail (nabigo ang stat)

# /usr/libexec/smrsh -c thetest

Pagsusulit sa SMRSH

Gaya ng nakikita mo, pinapayagan ka ng smrsh na magsagawa lamang ng mga program na ang mga link (o ang mga binary mismo) ay matatagpuan sa /usr/libexec/sm.bin. Ang parehong naaangkop sa mga script - sapat na upang magbigay ng isang link sa script; hindi na kailangang gumawa ng isang link sa interpreter. Maaari kang gumamit ng anumang pangalan ng programa kung nais mo - ang pangalan ng link ang gagamitin, hindi ang orihinal na pangalang "binary".

Upang gamitin ng Sendmail ang shell na ito sa halip na ang karaniwang sh shell upang mahawakan ang mga pag-redirect, idagdag ang sumusunod na linya sa mc file:

FEATURE(smrsh)

Ang mga gustong mag-edit ng cf file ay maaaring palitan ang pangalan ng programa sa linya ng Mprog, i.e. sa halip na “Mprog, P=/bin/sh . . . " gamitin ang " Mprog, P=/usr/libexec/smrsh . . . "

Entry by pass lang

Kung ang lahat ng iyong mga user ay inaasahang gagana lamang mula sa iyong subnet (o, sa matinding mga kaso, mayroong isang limitado at matatag na listahan ng mga panlabas na network para sa pag-access ng mail), pagkatapos ay ang gawain ng paglilimita sa mail relay mode upang ang iyong MTA ay hindi maging ang isang "bukas na relay" ay madaling malutas sa paggamit ng access.

Ngunit sa sandaling mayroon kang mga user na kailangang ma-access ang kanilang email mula sa kahit saan sa mundo, isang partikular na problema ang lumitaw. At ang pinakakatanggap-tanggap na solusyon ay ang paggamit ng pagpapatunay.

Marahil ang pinaka-maginhawang pamamaraan para sa Sendmail ay ang paggamit ng SASL authentication gamit ang SASL-Auth package. Bilang default, ang Sendmail sa FreeBSD ay binuo nang walang suporta sa SASL, dahil maaari mong i-verify sa pamamagitan ng pagbibigay ng sumusunod na command:

$ sendmail -d0.1 -bv

at maingat na pag-aaral ng mga linyang "Compiled with" para sa anumang pagbanggit ng SASL.

Para lumabas ang suporta sa SASL sa Sendmail, kailangan mong buuin itong muli. Upang gawin ito, dapat ay mayroon kang mga source code ng system. Ang pagkakasunud-sunod ng mga aksyon ay ang mga sumusunod:

  1. I-install mula sa mga security/cyrus-sasl2-saslauthd port. Maaaring iwanang default ang configuration.
  2. Sa file /usr/local/lib/sasl2/Sendmail.conf sinusuri namin ang halaga ng variable na pwcheck_method. Bilang default, ito ay tinukoy bilang saslauthd, na nangangahulugang gumagamit ito ng generic na daemon at magiging isang mahusay na solusyon sa karamihan ng mga kaso.
  3. Ine-edit namin ang /etc/make.conf, nagdaragdag ng ilang linya doon na gagamitin sa pagbuo ng mga program ng system:
  4. # SASL flag para sa Sendmail

    SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2

    SENDMAIL_LDFLAGS=-L/usr/local/lib

    SENDMAIL_LDADD=-lsasl2

    # Suportahan ang smtps port para sa sendmail (kung binalak)

    SENDMAIL_CFLAGS+= -D_FER_SMTP_SSL

    Dito namin tinukoy na idagdag ang mga flag na ito kapag kino-compile ang Sendmail, at sabihin din sa make program ang mga landas patungo sa mga kinakailangang library.

  5. Ngayon ay muling buuin natin ang Sendmail:

# cd /usr/src/lib/libsmutil/

# cd ../libsm

# gumawa ng malinis && gumawa ng depende && gumawa

# cd /usr/src/usr.sbin/sendmail

# gumawa ng malinis && gumawa ng depend && gumawa ng && gumawa ng pag-install

Siguraduhing tiyakin na dati mong na-install ang cyrus-sasl package (tingnan ang punto 1), kung hindi, makakatanggap ka ng error tungkol sa kawalan ng mga kinakailangang aklatan. Sa pamamagitan ng paraan, upang ang mga aklatan na ito ay hindi kailangang maghanap sa buong disk, masidhing inirerekomenda na i-install ang lahat mula lamang sa sistema ng mga port.

Dapat na ngayong banggitin ng output ang SASLv2:

$ sendmail -d0.1 –bv

Bersyon 8.13.6

Compiled with: . . .SASlv2. . .

Nangangahulugan ito na ang natitira na lang ay ayusin ang pagsasaayos ng Sendmail kung kinakailangan, at maaari mong suriin ang pagpapatakbo ng system. Ang unang bagay na maaaring mangailangan ng pagsasaayos ay ang listahan ng mga pinapayagang pamamaraan ng pagpapatunay. Maaari mong malaman kung ano ang nakuha mo kaagad pagkatapos ng recompilation sa pamamagitan ng pagkonekta sa pamamagitan ng telnet sa port 25 at pagpasok ng EHLO command:

$telnet localhost 25

Sinusubukan ang 127.0.0.1...

Nakakonekta sa localhost.

Ang karakter sa pagtakas ay "^]".

220 server.ru ESMTP Sendmail 8.13.6/8.13.6;

EHLO ako

250-server.ru Hello localhost, natutuwa akong makilala ka

250-ENHANCEDSTATUSCODES

250-PIPELINING

250-8BITMIME

250-SIZE 12500000

250-DSN

250-AUTH GSSAPI DIGEST-MD5 CRAM-MD5

250-DELIVERBY

250 TULONG

Ang ikatlong linya mula sa dulo ay nagpapakita ng mga sinusuportahang mekanismo ng pagpapatunay. Maaari mong baguhin ang kanilang listahan gamit ang mga sumusunod na direktiba:

TRUST_AUTH_MECH(`DIGEST-MD5 LOGIN PLAIN")dnl

define(`confAUTH_MECHANISMS", `DIGEST-MD5 LOGIN PLAIN")dnl

Ang pangalawang linya ay naglilista ng mga suportadong mekanismo sa pangkalahatan, habang ang unang direktiba ay tumutukoy sa isang listahan ng mga "pinagkakatiwalaang" mekanismo, i.e. ang mga iyon, kapag ginamit, ang pagpapadala ng mail ay papayagan, kahit na ang address ng kliyente ay hindi minarkahan sa database ng pag-access bilang RELAY o OK.

Guys! Oo, isa ako sa sarili ko!

Minsan ay maaaring lumitaw ang isang sitwasyon kapag ang iyong server, upang magpadala ng mensahe sa isang lugar, ay kailangang sumailalim sa mismong pagpapatunay. Halimbawa, ito ay isang pangkaraniwang sitwasyon kung ang iyong MTA ay eksklusibo na tumatakbo sa pamamagitan ng server ng provider, at ang provider ay hindi nais na gumastos ng pagsisikap na idagdag ang iyong host sa listahan ng mga pinagkakatiwalaan, iginiit na ang lahat ng mga kliyente ay dapat sumailalim sa isang pamamaraan ng pagpapatunay.

Mayroong isang authinfo file para dito, na konektado tulad nito:

FEATURE(`authinfo", `hash -o /etc/mail/authinfo")

Sa tinukoy na file, isinusulat namin ang mga parameter ng pagpapatunay para sa mga kinakailangang server sa sumusunod na format:

AuthInfo:servak.de "U:" "I:" "P:" "M:LOGIN PLAIN"

Narito ang servak.de ay ang pangalan ng malayong server kung saan kakailanganin mong magbigay ng impormasyon sa pagpapatunay. Ang M key ay tumutukoy sa mga pamamaraan na dapat gamitin. Huwag kalimutang gumawa ng hash ng file na ito.

LDAP - ang landas tungo sa pagkakaisa

Ang malalaking corporate network ay kadalasang gumagamit ng mga database ng LDAP upang mag-imbak ng impormasyon tungkol sa mga gumagamit ng mga network na ito. At magiging napakatalino na gamitin ang mekanismong ito upang mag-imbak ng ilang impormasyon sa pagsasaayos para sa iyong mail server.

Sinusuportahan ng Sendmail ang kakayahang magtrabaho sa isang database ng LDAP, na nagbibigay-daan sa iyong gumamit ng serbisyo ng direktoryo sa halip na mag-access ng mga file, alias, atbp. Gayunpaman, tulad ng sa kaso ng SASL, hindi sinusuportahan ng FreeBSD ang LDAP. Ang suportang ito ay pinagana sa parehong paraan:

  1. Nag-i-install kami mula sa openldap-client o openldap-server port (kung wala pa kaming LDAP server at gusto naming patakbuhin ito sa parehong makina).
  2. Gumagawa kami ng mga pagbabago sa /etc/make.conf:
  3. # LDAP flag para sa Sendmail

    SENDMAIL_CFLAGS+= -I/usr/local/include -DLDAPMAP

    SENDMAIL_LDFLAGS+= -L/usr/local/lib

    SENDMAIL_LDADD+= -lldap -llber

  4. Binuo namin muli ang Sendmail gaya ng inilarawan para sa SASL (tingnan ang punto 4).

Ngayon ang utos na pamilyar na sa atin ay dapat magpakita ng pagbanggit ng LDAP:

# sendmail -d0.1 -bv root | grep LDAP

Pagkatapos i-compile (o i-install) ang Sendmail, tingnan ang /usr/local/etc/openldap/slapd.conf upang makita kung pinagana ang sendmail.schema schema.

Kung hindi, idagdag ang linya:

isama ang /usr/share/sendmail/cf/sendmail.schema

Ikokonekta ng command na ito ang schema para sa Sendmail (kung saan tinukoy ang mga wastong katangian ng post), na kinakailangan upang mapunan nang tama ang mga kinakailangang field.

Ngayon ang natitira na lang ay ang magdagdag ng mga kinakailangang entry sa direktoryo ng LDAP (tingnan kung paano ito gawin sa dokumentasyon ng LDAP; maraming kapaki-pakinabang na link ang ibinigay sa dulo ng artikulo) at magdagdag ng mga direktiba sa mc file na nagpapahiwatig na dapat gamitin ang LDAP :

define(`confLDAP_DEFAULT_SPEC", `-h ldap.your.domain.ru -b dc=your,dc=domain,dc=ru")

FEATURE(`access_db", `LDAP")

define(`ALIAS_FILE", `ldap:")

Ang unang linya ay tumutukoy sa mga parameter ng LDAP server, ang pangalawa ay ipinapahiwatig namin na ang serbisyo ng direktoryo ay dapat gamitin sa halip na /etc/mail/access, at ang ikatlong linya ay katulad na nagpapahiwatig na ang LDAP ay dapat gamitin upang tukuyin ang mga alias.

Mga alternatibong LDA

Ang Sendmail ay nagpapahintulot sa iyo na ikonekta ang halos anumang programa bilang isang lokal na ahente ng paghahatid, siyempre, sa kondisyon na ang program na ito ay "mag-asal tulad ng isang LDA" (tandaan? - "kung ito ay mukhang isang pato, quacks tulad ng isang pato at paglalakad tulad ng isang pato, pagkatapos ito ay isang pato "). Dahil dito, mayroon kaming pagkakataon na magkaroon ng maraming impluwensya sa kung paano iniimbak ang mail. Samakatuwid, hindi nakakagulat na bilang karagdagan sa karaniwang FreeBSD mail.local, isang malaking bilang ng mga "alternatibo" na ahente sa paghahatid ay binuo.

Una sa lahat, naaalala ko ang napakalakas na procmail program, na nagbibigay ng malawak na kakayahan para sa pagproseso ng mail bago ito makarating sa mailbox ng user. Minsan ito ay aktibong ginagamit upang labanan ang spam na ang liham, sa prinsipyo, ay maaaring hindi maabot ang user. Ito ay hindi para sa wala na sa maraming mga distribusyon ng Linux ay gumagana ito kasabay ng Sendmail bilang default. Upang samantalahin ang mga benepisyo nito, ikonekta lamang ang LDA na ito (gamit ang MAILER(procmail) na direktiba, ang kaukulang m4 file ay kasama sa karaniwang pamamahagi ng Sendmail) at tukuyin sa mailertable ang paggamit ng LDA na ito para sa mga kinakailangang domain:

your.domain procmail

Ang pangalawang opsyon ay isama ang FEATURE(`local_procmail’) na direktiba sa mc file, na magtuturo sa paggamit ng procmail bilang karaniwang LDA (idineklara bilang lokal).

FEATURE(`local_procmail", `/usr/local/bin/maildrop", `maildrop -d $u")

Dito ginamit namin ang parehong direktiba, tanging sa halip na ang landas sa procmail ay tinukoy namin ang kailangan namin. Sa pamamagitan ng paraan, kung mayroon kang naka-install na procmail na hindi karaniwan (ibig sabihin, wala sa /usr/local/bin), kakailanganin mong tukuyin ang buong landas upang ikonekta ito. Naturally, upang ganap na gumana sa Maildir, ang iyong POP3/IMAP server ay dapat ding gumana sa format na ito, gayunpaman, iyon ay isang ganap na naiibang kuwento...

Ang susunod na hakbang tungo sa pagiging perpekto – DBMail

Para sa kumpletong kaligayahan, mainam na magdagdag ng flexibility sa mga mailbox ng user. Ang isang solusyon ay ang paggamit ng isang relational na DBMS upang iimbak ang mga ito, na ipinapatupad ng proyekto ng DBMail.

Hindi namin tatalakayin nang detalyado ang tungkol sa DBMail dito (ang package na ito ay maaaring matagumpay na magamit hindi lamang kasama ng Sendmail, kundi pati na rin sa iba pang mga sikat na MTA). Ang ilang pangkalahatang impormasyon ay ibinibigay sa sidebar ng DBMail. Sumangguni din sa artikulo ni Evgeny Prokopyev na "Mail server na batay sa isang relational na DBMS" (No. 1, 2006), kung saan ang gawain ng DBMail ay nasasaklawan nang detalyado.

Dahil ang paglalagay ng mga papasok na sulat sa mga mailbox ng user ay hindi isang function ng MTA (tulad ng naaalala mo mula sa unang bahagi ng artikulo, ito ay pinangangasiwaan ng Local Delivery Agent (LDA)), mula sa pananaw ng Sendmail ang logic nito sa pagproseso ng mensahe ay hindi nagbabago sa lahat. Ang kailangan lang ay irehistro ang DBMail bilang isang LDA at atasan ang Sendmail na gamitin ito upang maghatid ng mga papasok na sulat, tulad ng ginawa namin para sa procmail. Ang unang gawain ay nalutas sa pamamagitan ng isa sa mga sumusunod na direktiba sa mc file:

MAILER(dbmail)

MAILER(dbmail-lmtp)

Ang pangalawang gawain (upang malaman ng Sendmail kung saang mail gagamitin ang isang partikular na LDA) ay i-configure ang mailtertable upang magamit ang LDA na iyon:

your.domain dbmail

other.domain dbmail-lmpt:

Natural, maaari mong tukuyin ang paggamit ng dbmail para lamang sa mga kinakailangang domain. Huwag kalimutang buuin muli ang lahat at i-restart ang proseso ng sendmail para magkabisa ang mga pagbabago.

Sa tingin ko, magagamit din namin nang walang sakit ang parehong pamamaraan na ginamit namin upang kumonekta sa maildrop (ibig sabihin, lumilikha ng hitsura na ang aming dbmail ay procmail, at gumagamit ng mga nakahandang template para sa LDA na ito). Totoo, hindi ko naranasan ito sa pagsasanay.

Mga advanced na opsyon sa pag-filter

Ang napakalawak na posibilidad para sa pagproseso ng mga mensahe ay ibinibigay ng mga mail filter, o "milters" (milter, isang pagdadaglat para sa Mail fILTER), na lumabas sa bersyon 8.11.6 (hindi opisyal - mula 8.10).

Ang mga filter ng mail ay malawakang ginagamit upang makipag-ugnayan sa mga programa tulad ng mga antivirus, mga filter ng spam, atbp. Ibig sabihin, sila, sa esensya, ay nagbibigay ng kakayahang "i-wrap" ang naprosesong mensahe sa isang third-party na programa sa pamamagitan ng isang network o UNIX socket. Sa pamamagitan ng paraan, ang paggamit ng mga socket para sa pakikipag-ugnayan ay nagbibigay-daan sa iyo upang ilagay ang programa ng filter sa isa pang makina sa network, na sa ilang mga kaso ay maaaring maging kapaki-pakinabang para sa sentralisasyon ng pagproseso o para sa pagbawas ng pag-load sa pangunahing server kung ang pag-filter ay nangangailangan ng makabuluhang mga mapagkukunan ng computing o lumikha ng isang malaking load sa disk subsystem. Ngunit hindi natin dapat kalimutan ang tungkol sa mga karagdagang pagkaantala sa kasong ito, pati na rin ang seguridad ng impormasyong ipinadala sa socket.

Binibigyang-daan ka ng filter na kontrolin ang pagproseso ng isang liham mula sa sandaling maitatag ang isang koneksyon sa isang malayong server hanggang sa ganap itong matanggap. Maaaring i-abort ang pagproseso anumang oras gamit ang isa sa mga nagbabalik na flag: ACCEPT (tanggapin ang mensahe), REJECT (tanggihan nang may abiso sa nagpadala), o DISCARD (i-discard nang walang anumang abiso). Ibig sabihin, kung ang pangangailangang tanggihan ang isang mensahe ay natukoy nang maaga sa session, halimbawa, batay sa impormasyong inilagay sa header, maaari itong gawin bago ganap na tanggapin ang liham. Ang isa pang halimbawa ng paggamit ng feature na ito ay ang pagtanggap ng isang ACCEPT message nang hindi ini-scan ang lahat ng attachment para sa mga virus, kung may makikitang linya sa header na nagpapaalam na ang naturang pag-scan ay naisagawa na ng server ng nagpadala (bagama't ang mga naturang header, siyempre, ay hindi dapat lubos na pinagkakatiwalaan).

Bilang karagdagan sa pagpapasya kung tatanggapin o tatanggihan ang isang mensahe, pinapayagan ka ng milter na gumawa ng mga pagbabago sa paksa o katawan ng mensahe, magdagdag ng mga linya sa header, atbp. Salamat dito, maaari mong, halimbawa, maglagay ng impormasyon tungkol sa anti -Isinasagawa ang pag-scan ng virus sa header o mag-iwan ng tala na kinikilala ng mensahe bilang malamang na spam. Ito mismo ang ginagawa ng maraming antivirus at antispam na pakete.

Karaniwan, ang diagram ng daloy ng isang liham sa pamamagitan ng mga konektadong mga filter ay ipinapakita sa Fig. 1. Maaaring magkaroon ng maraming mga filter hangga't gusto (ang tunay na limitasyon ay ipinapataw lamang ng load sa system at ang mga kinakailangan para sa pinahihintulutang pagkaantala kapag nagpoproseso ng mga mensahe). Ang pagkakasunud-sunod kung saan inilalapat ang mga filter ay tinutukoy ng pagkakasunud-sunod kung saan nakakonekta ang mga ito sa file ng pagsasaayos.

Sa pamamagitan ng paraan, tungkol sa pagsasaayos... Milter ay konektado sa sumusunod na direktiba:

INPUT_MAIL_FILTER(`clmilter", `S=local:/var/run/clamav/clmilter.sock,F=, T=S:4m;R:4m")

Ang unang argumento ay ang pangalan ng filter, ang pangalawa ay isang string ng mga parameter. Maaaring mayroong tatlong mga parameter:

  • S, na tumutukoy sa socket na gagamitin (maaaring lokal o inet);
  • F, na tumutukoy kung paano haharapin ang sulat sa kaso ng mga problema sa milter (F=T ay nangangahulugan na ibalik ang isang pansamantalang error sa nagpadala (pansamantalang nabigo), F=R - tanggihan ang koneksyon, isang walang laman na halaga ng F= ay nagbibigay mga tagubilin upang huwag pansinin ang mga problema sa milter at iproseso ang koneksyon nang walang pag-filter);
  • Nagtatakda ang T ng ilang timeout (tingnan ang talahanayan), pagkatapos ay ituturing na "hindi tumutugon" ang filter

Mga flag ng timeout

Sa aming halimbawa, kung ang clamav-milter ay hindi nagsimulang tumanggap ng isang mensahe mula sa Sendmail sa loob ng apat na minuto o hindi tumugon sa loob ng parehong oras, ang mensahe ay ipapasa para sa karagdagang pagproseso nang walang pag-filter.

Sa halip na ang direktiba sa itaas, maaari mong ikonekta ang mga filter sa ganitong paraan:

MAIL_FILTER(`miltergreylist", `S=local:/var/milter-greylist/milter-greylist.sock,F=, T=S:4m;R:4m")dnl

define(`confINPUT_MAIL_FILTERS", `miltergreylist")

Dito, ang pamamaraan para sa pagkonekta ng isang filter ay nahahati sa dalawang yugto - sa unang direktiba ay ipinapahayag namin ang isang milter na may tinukoy na mga parameter, ang pangalawa - inirehistro namin ang tinukoy na milter bilang isang filter para sa pagproseso ng mga mensahe. Kung kailangan mong ikonekta ang ilang mga filter ng mail gamit ang scheme na ito, pagkatapos ay isang define directive lamang ang kailangan, kung saan ang lahat ng mga rehistradong filter ay nakalista, na pinaghihiwalay ng mga kuwit, sa kinakailangang pagkakasunud-sunod.

Dapat sabihin na para sa pagbuo ng milter mayroong isang mahusay na API na nagbibigay-daan sa iyo upang mabilis na lumikha ng mga filter sa katutubong C na wika ng Sendmail (sa listahan ng mga karagdagang literatura ay makakahanap ka ng isang link sa isang halimbawa ng pagbuo ng milter para sa pagdoble ng papalabas na mail sa isang tiyak address). May mga "bindings" sa API na ito para sa iba pang mga programming language, halimbawa, para sa Perl (Sendmail::Milter module, sa koleksyon ng mga port – mail/p5-Sendmail-Milter) at Python (Python Milter interface, sa Ports – mail/ py-milter ). Ang isang mahusay na halimbawa ng pagbuo ng filter sa Python ay tinalakay sa artikulo ni Roman Susi na "Mail Filter, o Milter = Mail + Filter" (No. 2, 2003, makikita mo ang artikulo sa website ng magazine sa seksyong "Mga Artikulo").

Ang email ay malawakang ginagamit sa maraming iba't ibang anyo. Siyempre, kung pag-uusapan natin ang pagsasagawa ng mga talakayan ng grupo, mayroong mas maginhawang paraan: IRC, mga serbisyo ng balita (NNTP), mga web forum, at panghuli. Sa kabila nito, ang mga email mailing list ay medyo popular pa rin na paraan upang talakayin ang ilang mga isyu. Maraming open source na proyekto (halimbawa, FreeBSD.org, ALT Linux) ang gumagamit ng mga mailing list para magbigay ng teknikal na suporta sa kanilang mga user, para talakayin ang mga bagong feature ng mga test version, para ipaalam ang tungkol sa mga natuklasang problema sa seguridad...

Isa sa mga pinakakilalang sistema ng pamamahala ng mailing list ay Majordomo. Napakahusay na isinasama nito sa mga server ng Sendmail at may sapat na hanay ng mga function para sa pagtatrabaho sa mga mailing.

Ang pag-install mula sa koleksyon ng mga port ay hindi nagiging sanhi ng anumang mga paghihirap, maliban sa isang maliit na nuance: simula sa FreeBSD 5.x, ang Perl ay hindi bahagi ng system at dapat na mai-install mula sa mga port, i.e. matatagpuan sa /usr/local/bin. Gayunpaman, nais ng Majordomo port na makita ang /usr/bin/perl sa lumang paraan. Kinailangan kong maglagay ng link (bagaman maaari mong, siyempre, iwasto ang Makefile):

# ln /usr/local/bin/perl /usr/bin/perl

Pagkatapos nito, kakailanganin mong tukuyin kung aling MTA ang gagamitin (tingnan ang Fig. 2; ang aming pagpipilian ay halata, sa palagay ko). Pagkatapos ng maikling compilation, makakakuha tayo ng bahagyang hindi karaniwang iskema ng placement ng file para sa FreeBSD: "binaries" at mga configuration file ay matatagpuan sa /usr/local/majordomo. Ang dalawang pinakamahalagang configuration file dito ay majordomo.cf, kung saan maaari mong baguhin ang mga pangunahing setting, at aliases.majordomo, na naglalaman ng naka-configure na hanay ng mga alias kung saan gagana si Majordomo.

Ang prinsipyo ng pakikipag-ugnayan ng package na ito sa Sendmail ay medyo simple at batay sa mga alias. Halimbawa, isang mensaheng dumarating sa mail.force_extra_parameters = ay ire-redirect sa /usr/local/majordomo/wrapper at ipoproseso ayon sa mga setting ng listahan.

Upang magsimulang magtrabaho ang Majordomo, kailangan mong ikonekta ang mga aliases file nito sa Sendmail (bagaman maaari mong kopyahin lamang ang mga kinakailangang linya sa /etc/mail/aliases):

define(`ALIAS_FILE", `/etc/mail/aliases, /usr/local/majordomo/aliases.majordomo")

Iyon lang - Handa nang umalis si Majordomo. Sa pamamagitan ng pagpapadala ng email na may command na "lists" sa katawan sa iyong domain sa majordomo, makakatanggap ka ng impormasyon tungkol sa mga available na mailing list (bilang default ay magkakaroon ng test-l at test-l-digest). Sa parehong paraan, maaari kang lumikha ng iyong sariling mga listahan, kung saan kailangan mong lumikha ng isang walang laman na file na naaayon sa pangalan ng mailing list sa /usr/local/majordomo/lists, at gayundin sa aliases.majordomo maglagay ng mga alias para sa mailing ilista ang sarili nito, mga utos, mga address ng mga may-ari, atbp. – maaari kang makakita ng halimbawa para sa parehong listahan ng demo, test-l.

Ang karagdagang pangangasiwa ay maaaring gawin sa pamamagitan ng email. Halimbawa, para mag-eksperimento sa listahan ng test-l, ang unang hakbang ay baguhin ang password ng administrator sa pamamagitan ng pagpapadala ng sulat sa test-l-request na may pariralang "passwd test-l test mynewpas", kung saan test-l ang pangalan ng listahan kung saan pinapalitan ang password, pagsubok – lumang password (ginamit bilang default), mynewpas – bagong password. Kung ikaw ay matagumpay, makakatanggap ka ng isang email na may mensaheng "Nabago ang password."

Gayunpaman, ang pagtatrabaho sa mga mailing list ay isa pang paksa, at hindi na kami magdedetalye rito. Bukod dito, mayroong isang mahusay na pahina ng tulong sa iyong serbisyo, man majordomo.

Sa ilalim ng tubig na bahagi ng iceberg

Dito na siguro natin matatapos ang ating pagkakakilala sa Sendmail. Naturally, kahit na sa loob ng isang napakalaking cycle imposibleng masakop ang lahat ng aspeto ng pagpapatakbo ng makapangyarihang pakete na ito. Samakatuwid, sa konklusyon, nagpasya akong magbigay ng isang listahan ng mga link (malayo rin sa kumpleto) kung saan makakakuha ka ng karagdagang impormasyon.

Iyon lang! Good luck!

Aplikasyon

Cyrus SASL

Ang mekanismo ng pagpapatunay ng SASL (Simple Authentication at Security Layer) ay ginagamit upang ipatupad ang secure na pagpapatotoo kasabay ng iba pang mga protocol sa Internet. Bilang karagdagan sa pagpapatunay, nagbibigay ang SASL ng mga mekanismo para sa pagsuri sa integridad ng data.

Isa sa pinakasikat na pagpapatupad ng SASL ay ang library ng Cyrus SASL. Habang binuo para sa mga pangangailangan ng Cyrus IMAP Server, malawak itong ginagamit para sa iba pang mga gawain, kabilang ang pagpapatunay ng SMTP.

Sinusuportahan ng Cyrus SASL ang isang malawak na hanay ng mga mekanismo ng pagpapatunay - CRAM-MD5, DIGEST-MD5, Kerberos, GSSAPI (spesipikasyon ng Kerberos 5). Kung kinakailangan, maaaring paganahin ang suporta para sa "flat" na mga mekanismo ng pagpapatotoo tulad ng LOGIN at PLAIN, ngunit inirerekomendang gamitin lamang ang mga ito kapag nagtatrabaho sa isang secure na koneksyon.

Upang magsagawa ng pagpapatunay, ang saslauthd daemon na kasama sa Cyrus SASL ay ginagamit. Maaari nitong suriin ang mga password gamit ang sarili nitong database at gamit ang PAM, mga mekanismo ng LDAP, ang file ng password ng system /etc/passwd, atbp.

LDAP

Ang Lightweight Directory Access Protocol ay isang protocol na idinisenyo upang paganahin ang pagpapatakbo ng tinatawag na serbisyo ng direktoryo. Ginagamit ang mga serbisyo ng direktoryo upang sentral na mag-imbak ng iba't ibang impormasyon, tulad ng mga user account, address book, at iba't ibang setting.

Ang serbisyo ng direktoryo (tinukoy sa X.500 protocol) ay orihinal na idinisenyo upang maghatid ng X.400 mail network na binuo ng OSI. Upang ma-access ang serbisyong ito, ginamit ang DAP protocol, na nagsilbing batayan para sa pagbuo ng isang mas simple at mas maginhawang LDAP.

Ang mga entry na nakaimbak sa mga direktoryo ng LDAP ay kinakatawan ng isang natatanging pangalan (nakikilalang pangalan) at isang bilang ng mga katangian na tinukoy sa tinatawag na mga schema. Ang istraktura ng talaan ay nagbibigay-daan sa iyong madaling ayusin ang iyong mga tala sa isang tree view.

Ang pangunahing bentahe ng LDAP sa mga flat file o relational database ay ang pagtutok nito sa mataas na bilis ng pagbasa. Isinasaalang-alang ang napaka-epektibong pag-cache, ang paggamit ng LDAP, bilang karagdagan sa pagsentro ng impormasyon, na nagpapasimple sa pagpapanatili nito (kabilang ang pag-backup), ay binabawasan din ang mga pagkaantala sa pagkuha ng impormasyon kung ang dami ng data ay umabot sa malalaking halaga.

Bilang karagdagan sa libreng pagpapatupad ng serbisyo ng direktoryo - OpenLDAP, malawakang ginagamit sa mga sistema ng pamilyang UNIX / Linux, mayroong isang bilang ng iba pa (halimbawa, Active Directory, na idinisenyo para sa pamamahala ng mga network ng Windows).

Ang LDAP protocol mismo ay tinukoy sa RFC 1777, RFC 2251 (bersyon 3). Mayroon ding isang malaking bilang ng pagpapalawak at komplementaryong mga dokumento.

DBMail

Ang programa ng DBMail, na binuo ng dalawang kumpanyang Danish - IC&S at NFG, ay nagbibigay-daan sa iyong ayusin ang pag-iimbak ng mga mailbox ng user sa isang database ng pangkalahatang layunin. Ang MySQL at PostgreSQL ay suportado (ang bersyon 2.2 ay inaasahang magdagdag ng SQLite sa listahang ito). Para sa mga maliliit na mail server na nagsisilbi sa lokal na network ng iyong negosyo, ang karagdagang link sa chain ng "mga serbisyo ng mail" para sa mga user ay magbabawas lamang ng pagiging maaasahan at magpapalubha sa pagpapanatili ng system, na halos walang kapalit.

Gayunpaman, sa mga system na may malaking bilang ng mga user o kung saan ang mail system ay nangangailangan ng maximum na flexibility at ang kakayahang magpatupad ng malawak na iba't ibang mga serbisyo (halimbawa, full-text na paghahanap ng isang buong mailbox gamit ang isang web interface), na nag-iimbak ng lahat ng mga mensahe sa ang isang database ay nagbibigay ng halos walang limitasyong mga posibilidad. Halimbawa, napakadaling pinapayagan ka ng DBMail na itakda ang maximum na laki ng mailbox (sa kaso ng paggamit ng tradisyonal na imbakan, kailangan mong gumamit ng mekanismo ng system para sa pagtatakda ng mga quota sa file system): kailangan mo lamang itong tukuyin sa command na lumikha ng bagong user o baguhin ang mga parameter ng kanyang account:

# dbmail-users -c vasya -m 100M

Anumang mga istatistika ay maaaring makuha nang direkta mula sa database gamit ang isang regular na query sa SQL. Bilang karagdagan, maaari mong gamitin ang lahat ng mga pakinabang ng mga relational database, tulad ng redundancy, pagho-host sa isang hiwalay na server, clustering (bagaman may kaugnayan sa kasalukuyang sinusuportahang mga DBMS, ang pagpapatupad nito ay nangangailangan ng ilang karagdagang pagsisikap; tingnan, halimbawa, ang artikulo ni Andrey Trenin "Paglikha ng isang kumpol para sa PostgreSQL "(No. 1 http://reki.ru/sendmail_setup.html http://unix1.jinr.ru/~lavr/sendmail+sasl2 http://www.milter.org .

  • Roman Susi, Mail Filter, o Milter = Mail + Filter – .
  • Isang halimbawa ng milter sa C para sa pagdoble ng papalabas na mail - http://www.opennet.ru/base/met/mail_copy_milter.txt.html.
  • Iba

    1. Ang pangunahing website ng proyekto ng DBMail ay http://www.dbmail.org.
    2. Dokumentasyon ng DBMail – http://www.helgrim.com/dbmaildocs/installation.html.
    3. SMTP STARTTLS sa sendmail/Secure Switch – http://linuxnews.ru/docs/new/starttls.html.
    4. Majordomo at MajorCool HOWTO –



    Bago sa site

    >

    Pinakasikat