Vikonannya tsіkavih ve standart olmayan görevler için Vykoristovuёmo nginx. Nginx web sunucusu, işlevselliğe genel bakış Yüklü ve ince ayarlı PHP

NGINX sadece bir web sunucusu olarak değil, aynı zamanda bir http-proxy olarak da kullanılabilir, aynı zamanda SMTP, IMAP, POP3 protokolleri aracılığıyla proxy yapmak için de kullanılabilir. Nalashtuvati'ye izin verin:

  • Ölçekli bir posta sistemi için tek bir giriş noktası.
  • Posta sunucuları arasındaki boşluğu dengeleme.

Bu makale Linux işletim sistemine yüklenmiştir. İsteklerin gönderildiği mail servisi olarak postfix, exim, dovecot, exchange, iredmail ve daha fazlasını kullanabilirsiniz.

robotik prensip

NGINX, web sunucusundan kimlik doğrulamasını kabul eder ve alır. Oturum açma ve parolanın yeniden doğrulanmasının sonucuna bağlı olarak, proxy, başlıkların tersine çevrildi.

Başarı zamanlarında:

Böylece, kimlik doğrulamaya göre posta sunucusunun sunucusu ve bağlantı noktası belirlenir. Bu, ileri düzey mov programlama bilgisi için birçok fırsat sunar.

Başarısızlık zamanlarında:

Kimlik doğrulama sonucuna ve başlığa bağlı olarak, istemci ihtiyacımız olan şeye yönlendirilir. posta sunucusu.

Sunucu hazırlığı

Sunucu güvenliğinde bazı değişiklikler yapalım.

SELinux

SELinux, CentOS veya Victory dahil qiu sistemi Ubuntu'da güvenlik:

vi /etc/selinux/config

SELINUX=devre dışı

güvenlik duvarı

firewalld nasıl kullanılır(CentOS'tan kilitlemek için):

firewall-cmd --kalıcı --add-port=25/tcp --add-port=110/tcp --add-port=143/tcp

güvenlik duvarı-cmd --yeniden yükle

iptables nasıl kullanılır(Ubuntu'da kilitlemek için):

iptables -A GİRİŞ -p tcp --dport 25-j KABUL

iptables -A GİRİŞ -p tcp --dport 110 -j KABUL

iptables -A GİRİŞ -p tcp --dport 143 -j KABUL

apt-get install iptables-kalıcı

iptables-save > /etc/iptables/rules.v4

* içinde bu popo SMTP (25), POP3 (110) ve IMAP'ye (143) izin verdik.

NGINX'i yükleme

İşletim sistemine düşen NGINX'in kurulumu trochic.

veya Linux sento:

yum nginx'i yükle

veya Linux ubuntu:

uygun kurulum nginx

Hizmeti otomatik olarak başlatmaya ve yogaya başlamaya izin verilir:

systemctl nginx'i etkinleştir

systemctl nginx'i başlat

NGINX sistemde kurulu ise aşağıdaki modüller ile kontrol edilebilir:

Web sunucusu seçeneklerinin bir listesini kabul ediyoruz - aralarında seçim yapabiliriz --ile-posta. Gerekli bir modül olmadığı için nginx'i güncellemeniz gerekiyor

NGINX'i özelleştirme

nginx yapılandırma dosyasını açın ve seçeneği ekleyin posta:

vi /etc/nginx/nginx.conf

posta (

auth_http localhost:80/auth.php;

sunucu(
25 dinle;
protokol smtp;
smtp_auth oturum açma düz cram-md5;
}

sunucu(
110 dinle;
protokol pop3;

}

sunucu(
143 dinle;
protokol haritası;
}
}

*de:

  • sunucu adı- SMTP özelleştirmesinin saati olması gereken posta sunucusunun adı.
  • auth_http- kimlik doğrulama istemek için web sunucusu ve URL.
  • proxy_pass_error_message- kimlik doğrulamadan çok uzak olmayan bir saat boyunca bildirimlerin bildirilmesine izin verin veya engelleyin.
  • dinlemek- içkinin duyulabileceği bir liman.
  • protokol- bağlantı noktasının dinlendiği programın protokolü.
  • smtp_auth— SMTP için mevcut kimlik doğrulama yöntemleri.
  • pop3_auth— Mevcut POP3 kimlik doğrulama yöntemleri.

Aşağıdakileri http-sunucu bölümüne ekleyin:

sunucu(
80 default_server'ı dinle;
dinle [::]:80 default_server;
...

Konum ~ \.php$ (
$root_path /usr/share/nginx/html'yi ayarla;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $root_path$fastcgi_script_name;
fastcgi_params'ı dahil et;
fastcgi_param DOCUMENT_ROOT $root_path;
}
...

nginx sunucusunu yeniden başlatın:

systemctl nginx'i yeniden başlat

PHP'yi yükleme ve özelleştirme

PHP yardımı için kimlik doğrulaması elde etmek için aşağıdaki paketleri sisteme kurmanız gerekir.

Yakscho CentOS:

yum php php-fpm'yi kurun

Yakscho ubuntu:

apt-get kurulum php php-fpm

PHP-FPM'yi çalıştırın:

systemctl php-fpm'yi etkinleştir

systemctl php-fpm'yi başlat

kimlik doğrulama

Oturum açma ve parolanın yeniden kontrol edilmesi, yolu auth_http seçeneğiyle ayarlanan komut dosyası tarafından değiştirilir. Uygulamamız bir PHP betiğine sahiptir.

Giriş ve şifreyi doğrulamak için komut dosyası için resmi bir boşluk örneği:

vi /usr/share/nginx/html/auth.php

* bu betik, oturum açma ve parola olup olmadığını kabul eder ve isteği sunucuya yönlendirir. 192.168.1.22 і 192.168.1.33 . Kimlik doğrulama algoritmasını ayarlamak için, 61 - 64 satırlarını düzenleyin. Sunucu dönüşü için, yeniden yönlendirme yolunda, satır 73 - 77 - bu uygulamada, oturum açma sembolüne dayalıdır "a", "c", "f", "g", sonra sunucuya yönlendirileceksiniz mailhost01, aksi halde, üzerinde mailhost02. Sunucu adlarını IP adresleriyle ayarlamak 31, 32. satırlarda ayarlanabilir, aksi takdirde etki alanı adına gidersiniz.

Bir posta sunucusu kurma

NGINX proxy'leri arasında veri alışverişi yapın ve açık kaynağa gitmek için bir sunucu gönderin. PLAIN mekanizmasının arkasına kimlik doğrulamayı etkinleştirme yeteneği eklemek gerekir. Örneğin, güvercin bağlama için robimo şunları alır:

vi /etc/dovecot/conf.d/10-auth.conf

Satırları ekliyoruz:

uzak 192.168.1.11 (
disable_plaintext_auth = hayır
}

* hangi uygulamanın sunucudan kimlik doğrulama için PLAIN isteklerine izin verildi 192.168.1.11 .

Ayrıca yeniden doğrulanır:

* yakscho ssl anne anlamı gereklidir, temizlenecek hiçbir şeyin yeniden doğrulanması, oscillki weide, bir taraftan sunucunun net bir görünümde içmenize izin verdiğini, aynı zamanda ssl şifrelemesini de sağlar.

Dovecot hizmetini yeniden başlatın:

systemctl dovecot'u yeniden başlat

İstemcinin özelleştirilmesi

Proxy ayarlarımızı yeniden kontrol etmeye gidebilirsiniz. IMAP / POP2 / SMTP gibi istemci ayarlarında hangisi için nginx sunucusunun adresini veya adını belirtin, örneğin:

* bu uygulama için, posta istemcisi sunucuya bağlanmak üzere ayarlanmıştır 192.168.1.11 üzerinde kritik limanlara 143 (IMAP) ve 25 (SMTP).

şifreleme

Artık bir SSL bağlantımız var. Nginx modül ile sipariş edilebilir mail_ssl_module- Ekip tarafından revize edildi:

Gerekli modülün varlığı için nginx sıralanır.

Ardından yapılandırma dosyamızı düzenleriz:

vi /etc/nginx/nginx.conf

posta (
sunucu_adı mail.domain.local;
auth_http localhost/auth.php;

proxy_pass_error_message açık;

SSL açık;
ssl_certificate /etc/ssl/nginx/public.crt;
ssl_certificate_key /etc/ssl/nginx/private.key;
ssl_ciphers YÜKSEK:!aNULL:!MD5;
ssl_session_cache paylaşılan:SSL:10m;
ssl_session_timeout 10m;

sunucu(
110 dinle;
protokol pop3;
pop3_auth düz apop cram-md5;
}

sunucu(
143 dinle;
protokol haritası;
}

Nedeni SELinux güvenlik sistemidir.

Çözüm: SELinux'u devre dışı bırakın veya yapılandırın.

Nginx hızla popülerlik kazanıyor ve kendini Apache için basitçe ezici statiklerden giderek daha durgun hale gelen tamamen işlevsel ve yeniden açılan bir web sunucusuna dönüştürüyor. Bu yazımızda, web sunucusundan maksimum erişime izin veren nginx sürümünün cica ve standart dışı senaryolarından bahsedeceğiz.

Proxy gönder

En bariz olanla başlayalım - nginx'in bir posta proxy'si olarak rolü. Bu işlev arkada nginx'te ve eksen üretimde galip geliyor. Nasıl olursa olsun, nginx, SSL ve StartTLS dahil olmak üzere farklı kimlik doğrulama yöntemleriyle POP3, IMAP ve SMTP protokollerinin proxy'sini destekler ve çalışması kolaydır.

Bu gerekli mi? Є en az iki zastosuvannya tsієї işlevselliği yak. İlk olarak: can sıkıcı spam göndericilere karşı bir kalkan olarak nginx'i kazanın, SMTP sunucumuz aracılığıyla smack listeleri göndermeyi deneyin. Ses spam göndericileri çok fazla sorun yaratmaz, kırıklar kimlik doğrulama aşamasında kolayca etkinleştirilir, ancak çok zenginleşirlerse nginx işlemci kaynaklarından tasarruf etmenize yardımcı olur. Arkadaş: ping'leri POP3/IMAP posta sunucularına yönlendirmek için ping nginx. Zim, açıkçası, bir sonraki gönderi proxy'leri teslim edilecek, ancak şimdi, örneğin HTTP statiklerini işlemek için nginx zaten ön uçta kurulu olduğundan, sunucular şehri çitle çevriliyor?

Nginx'in posta proxy sunucusu varsayılan olarak bilinmiyor. Vіn vikoristovy dodatkovy ball authentifikatsії, HTTP aracılığıyla uygulamalar ve sadece bar'єr'den geçmek mümkün, vin çok geçti. Bu işlevsellik, nginx'in coristuvacha'nın verilerini kontrol ettiği ve bunu standart OK'nin önünde ortaya çıkaran/kazanan veya bir değişikliğe neden olan (Geçersiz oturum açma veya parola gibi) bir kenar çubuğu/komut dosyası oluşturma yoluyla sağlanır. Komut dosyası aşağıdaki başlıklarla başlatılır:

Kimlik doğrulama komut dosyası giriş verileri HTTP_AUTH_USER: CodeWatch HTTP_AUTH_PASS: Parola HTTP_AUTH_PROTOCOL: Posta protokolü (IMAP, POP3 veya SMTP)

Ve şu şekilde çevirin:

Kimlik doğrulama komut dosyası çıktı verileri HTTP_AUTH_STATUS: Tamam veya nedeni değiştirin HTTP_AUTH_SERVER: HTTP_AUTH_PORT yeniden yönlendirmek için gerçek posta sunucusu: sunucu bağlantı noktası

Chudova aslında böyle pіdhodu, osoblivіst scho yogo mozhna vikoristovuvati zovsіm değil samoї autentifіkatsії ve sakinleri rozkidati koristuvachіv rіznih vnutrіshnіh sunucularında, nadas od іmenі koristuvacha, Rölyef için yuvarlak robin vzagalі organіzuvavshi nayprostіshe balansuvannya navantazhennya Abo poshtovі Dedicated Sunucular potochnі navantazhennya hakkında danih. Vtim, çekirdekleri dahili posta sunucusuna aktarmak daha gerekli olduğundan, gerçek komut dosyasını nginx'in kendisi tarafından uygulanan bir saplama ile değiştirebilirsiniz. Örneğin, nginx yapılandırmasındaki en basit SMTP ve IMAP proxy'si şöyle görünecektir:

# vi /etc/nginx/nginx.conf mail ( # Kimlik doğrulama komut dosyası adresleri auth_http localhost:8080/auth; # Posta sunucusunu devre dışı bırakmak ve xclient'i kapatmak için XCLIENT komutunu açın; # IMAP sunucusu sunucusu ( dinle 143; protokol imap; proxy on; ) # SMTP sunucu sunucusu ( 25'i dinle; protokol smtp; proxy açık; ) )

# vi /etc/nginx/nginx.conf http ( # Posta sunucusunun gerekli bağlantı noktasına eşleme, HTTP_AUTH_PROTOCOL başlık haritasında ayarlanan bağlantı noktasında saklanır $http_auth_protocol $mailport ( varsayılan 25; smtp 25; imap 143; ) # Uygulama " - Tamam'ı çevirin ve eşlenen sunucuya ek olarak gerekli bağlantı noktasını ayarlayarak arayanı dahili posta sunucusuna yönlendirin ( dinle 8080; konum /auth ( add_header "Auth-Status" "Tamam"; add_header "Auth-Server" "192.168") .1). ;add_header "Auth-Port" $mailport; dönüş 200; )) )

Bu kadar. Bu yapılandırma, görünüşte uygunsuz bir komut dosyasının üst kısmını hiçbir şekilde oluşturmadan, iletileri şeffaf bir şekilde dahili posta sunucusuna yönlendirmenize olanak tanır. Komut dosyası yüklendikten sonra, bu yapılandırma önemli ölçüde genişletilebilir: makyaj dengesini ayarlayın, LDAP tabanı için dosyaları yeniden yazın ve diğer işlemleri değiştirin. Komut dosyasının yazılması bu makalenin kapsamını aşıyor, PHP ve Python hakkında daha yüzeysel bilgi edinmek için onu uygulamak daha da kolay.

video akışı

Nginx'e dayalı harika video barındırma ayarlamak kolaydır. Videoyu sunucunun erişebileceği bir dizine dönüştürmek, yapılandırmaya kaydetmek ve flash veya HTML5 programlayıcıyı videonun o dizinden alınması için ayarlamak yeterlidir. Bununla birlikte, bir tür uzak dzherel veya bir web kamerasından sürekli bir video akışı oluşturmak gerekir, böyle bir şema çalışmaz ve özel akış protokollerinin işaretçisine hayran kalabilirsiniz.

Є k_lka protokolü, scho vyrіshuyut tse zavdannya, en verimli ve RTMP'yi destekler. Tüm RTMP sunucu uygulamalarının sorunlardan muzdarip olması o kadar da kötü değil. Resmi Adobe Flash Medya Sunucusu ücretlidir. Red5 ve Wowza Java ile yazılmıştır, bu gerekli verimliliği vermez, başka bir uygulama olan Erlyvideo, Erlang'da yazılmıştır, bu da küme kurulumunda iyidir, ancak tek bir sunucu için o kadar verimli değildir.

Pekala, başka bir pidhid yayacağım - nginx için RTMP modülünü hızlandırın. Mucizevi bir ürün olarak ve bundan önce, bir sunucunun hem sitenin web arayüzüne hem de video akışına hizmet etmesine izin verin. Tek sorun, bu modülün resmi olmamasıdır, bu nedenle nginx onu kendi başına alabilir. Neyse ki, katlama standart bir şekilde yapılır:

$ sudo apt-get nginx'i kaldır $ cd /tmp $ wget http://bit.ly/VyK0lU -O nginx-rtmp.zip $ unzip nginx-rtmp.zip $ wget http://nginx.org/download/nginx- 1.2.6.tar.gz $tar -xzf nginx-1.2.6.tar.gz $cd nginx-1.2.6 $./configure --add-module=/tmp/nginx-rtmp-module-master $make$ sudo kurulum yap

Şimdi modülün yapılandırılması gerekiyor. Her zaman olduğu gibi nginx yapılandırmasıyla savaşmak için:

Rtmp (# site/rtmp sunucusunun arkasındaki 1935 numaralı bağlantı noktasında canlı sunucuyu etkinleştir (dinle 1935; uygulama rtmp (canlı açık; ) )

RTMP modülü zengin bir akış yapılandırmasında çalışmaz, bu nedenle birçok nginx çalışma süreci bir hızına ulaşacaktır (bu sorunu önlemek için size daha sonra anlatacağım):

işçi_işlemleri 1;

Artık dosyayı kaydedebilir ve nginx yapılandırmasını yeniden okuyabilirsiniz. Nginx kurulumu tamamlandı, ancak video akışının kendisi henüz mümkün değil, bu yüzden onu buraya götürmeniz gerekiyor. Örneğin video.avi dosyasını stream dizinine koyalım. Yogayı anında açmak ve RTMP-taşıyıcımıza sarmak için eski güzel FFmpeg'i hızlandıralım:

# ffmpeg -re -i ~/video.avi -c kopya -f flv rtmp://localhost/rtmp/stream

Görüntüleme videosu dosyası H264 formatında değilse, onu yeniden kodlamanız gerekir. Aynı FFmpeg'in yardımı için çok fazla robiti olabilir:

# ffmpeg -re -i ~/video.avi -c:v libx264 -c:a libfaac -ar 44100 -ac 2 -f flv rtmp://localhost/rtmp/stream

Potik doğrudan web kamerasından sipariş edilebilir:

# ffmpeg -f video4linux2 -i /dev/video0 -c:v libx264 -an -f flv rtmp://localhost/rtmp/stream

İstemci tarafında akışa göz atmak için, bunun bir tür RTMP destekçisi olup olmadığını hızlandırabilirsiniz, örneğin mplayer:

$mplayer rmtp://example.com/rtmp/stream

Aksi takdirde, aynı nginx gibi göründüğü için programı doğrudan web sayfasından alabilirsiniz (resmi belgelerden bir örnek):

En basit web RTMP programı

Yalnızca iki önemli satır vardır: RTMP akışını belirten "file: "stream" ve RTMP akışının adresini belirten "streamer: "rtmp://localhost/rtmp"". Daha fazlası için, bu tür nalaştuvanların görevi yeterli olacaktır. Bir adres için birkaç farklı akış çalıştırabilirsiniz ve nginx bunları istemciler arasında etkin bir şekilde çoğaltır. Alece, bina RTMP modülünün olduğu her şeyden uzaktır. Bu yardımla, örneğin, video akışının başka bir sunucudan yeniden iletimini düzenleyebilirsiniz. FFmpeg sunucusu bu amaç için gerekli değildir, yapılandırmaya sonraki satırları eklemek yeterlidir:

# vi /etc/nginx/nginx.conf uygulaması rtmp (canlı; çek rtmp://rtmp.example.com; )

Farklı kapasitelerde bir dizi akış oluşturmak gerektiğinden, FFmpeg kaydediciyi doğrudan nginx'ten arayabilirsiniz:

# vi /etc/nginx/nginx.conf uygulaması rtmp ( live on; exec ffmpeg -i rtmp://localhost/rtmp/$name -c:v flv -c:a -s 320x240 -f flv rtmp://localhost) /rtmp-320x240/$name; ) uygulama rtmp-320x240 ( live on; )

Böyle bir konfigürasyonun yardımı için, biri rtmp://site/rtmp adresinde, diğeri 320x240 gibi çalışan, rtmp://site/rtmp adresinde bulunan iki tarayıcı alacağız. –320x240. Ardından siteye bir flash oynatıcı ekleyebilir ve oynatıcıyı tarayıcının adresine gönderecek gücü seçmek için düğmeler ekleyebilirsiniz.

Eh, ve nihayet bir ölçüde müziğin hareketinin poposu:

doğru iken; do ffmpeg -re -i ``find /var/music -type f -name "*.mp3"|sort -R|head -n 1`" -vn -c:a libfaac -ar 44100 -ac 2 -f flv rtmp://localhost/rtmp/stream;bitti

Git proxy'si

Git sürüm kontrol sistemi, depoya yalnızca Git ve SSH protokolleri için değil, aynı zamanda HTTP için de güvenli erişim sağlamak üzere tasarlanmıştır. HTTP erişiminin uygulanması ilkel ve ücretsiz olsaydı, depo ile tam çalışma sağlardı. 1.6.6 sürümünden bu yana durum değişti ve bugün protokol, örneğin güvenlik duvarı güvenlik duvarını ve diğer tarafından atlanarak veya bir web arayüzü ile barındırılan bir Git barındırma oluşturularak tersine çevrilebilir.

Yazık, resmi belgeler sadece Apache web sunucusunu kullanarak Git'e erişimi organize etmekten bahsediyor, ancak uygulamanın kendisi standart bir CGI arayüzü ile aynı programdır, pratik olarak lighttpd, nginx dahil olmak üzere başka herhangi bir sunucuya vidalayabilirsiniz. Sunucunun kendisi dışında hiçbir şeye ihtiyaç duyulmayan Git ve gerekli olan küçük FastCGI sunucusu fcgiwrap'i kurdu, çünkü nginx aracı olmadan CGI ile çalışamaz, ancak FastCGI protokolünün yardımı için komut dosyalarını çağırabilir.

Robotların tüm şeması buna benziyor. fcgiwrap sunucusu arka planda ve kontrol zamanı CGI ekine isteniyor. Nginx, en iyi ihtimalle, belirttiğimiz adrese gitmek için FastCGI arayüzü aracılığıyla git-http-backend CGI ikili dosyasını talep etmeye zorlanacak. Girdiyi aldıktan sonra, fcgiwrap, GIT istemcisi tarafından iletilen CGI bağımsız değişkenlerinden git-http-backend'i izler ve sonucu döndürür.

Böyle bir şemayı uygulamak için başlangıçta fcgiwrap ekleyeceğiz:

$ sudo apt-get install fcgiwrap

Ayarlamak gerekli değildir, tüm parametreler FastCGI protokolü tarafından iletilir. VIN'in başlatılması da otomatik olacaktır. Bu yüzden nginx'i düzeltmek çok fazla. Bunun için /etc/nginx/sites-enabled/git dosyasını oluşturuyoruz (böyle bir dizin olmadığı için ana konfigürasyona yazabilirsiniz) ve bir sonraki adımdan önce şunu yazıyoruz:

# vi /etc/nginx/sites-enabled/git server ( # 8080 portuna bağlı olarak 8080 dinle; # Sunucumuzun adresleri (DNS girişi eklemeyi unutmayın) server_name git.example.ru; # Logs access_log /var/ log/nginx /git-http-backend.access.log;error_log /var/log/nginx/git-http-backend.error.log; arg_service ~* "git-receive-pack") ( ^ /private$uri'yi yeniden yazın son; ) /etc/nginx/fastcgi_params; # git-http-backend fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend'imizin adresleri; # Git deposu adresleri fastcgi_param GIT_PROJECT_ROOT /srv/git; # Fastcgi_param dosya adresleri PATH_INFO $uri; # Sunucu adresleri fcgiwrap fastcgi_pass 127.0.0.1:9001; ) # Yazma erişimi için adresler . )$ ( # Güncellenmiş auth_basic "git anonim salt okunur, kimliği doğrulanmış yazma"; # htpasswd auth_basic_user_file /etc/nginx/htpasswd'ye dayalı HTTP kimlik doğrulaması; # Özelleştirilmiş FastCGI ve nclude /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILEgit /usr lib/NAME -core/git-http-backend; fastcgi_param GIT_PROJECT_ROOT /srv/git; fastcgi_param PATH_INFO $1; fastcgi_pass 127.0.0.1:9001; )

Bu yapılandırma üç önemli kelime gönderir:

  1. Depo adresleri /srv/git olacaktır, uygun erişim haklarını ayarlayabilirsiniz: $ sudo chown -R www-data:www-data /srv/git
  2. Deponun kendisi, anonim kullanıcılar tarafından okunmamaktan ve HTTP üzerinden yüklemelere izin vermekten sorumludur: $ cd /srv/git $ git config core.sharedrepository true
  3. Yardım htpasswd dosyası için kimlik doğrulama gereklidir, onu oluşturup yeni koda eklemeniz gerekir: $ sudo apt-get install apache2-utils $ htpasswd -c /etc/nginx/htpasswd user1

Şimdilik bu kadar, nginx'i yeniden yükleyin:

mikro önbellek

Dinamik, sık güncellenen bir site ile durumun farkındayız, büyük hırs(şarabı en büyük haber sitelerinden birinin yanında harcadıktan sonra) ve içerikle uğraşmayı bırakın. Doğru para çekme planının yetkin optimizasyonu ve uygulanması uzun zaman alacak ve sorunların bir an önce çözülmesi gerekiyor. Neyi etkileyebiliriz?

Fennb.com'dan Fenn Bailey, bu durumdan en az masrafla çıkmanın birkaç yolu fikrini yaydı. Buradaki fikir, nginx sunucusunun önüne koymak ve iletilen tüm içeriği yalnızca önbelleğe almak değil, yalnızca bir saniyeliğine önbelleğe almaktır. Buradaki Rodzinka, siteye bir saniyede yüzlerce ve binlerce görüntüleme, aslında en büyük önbelleğe alınmış tarafı alarak arka uca yalnızca bir geri dönüş sağlayan kişi içindir. Bu fiyata, hatırlamaya değmez çünkü dinamik bir sitede bir saniye hiçbir şey ifade etmez.

Fikrin uygulanmasından yapılandırma çok düzgün görünmüyor:

# vi /etc/nginx/sites-enabled/cache-proxy # Önbelleği ayarla proxy_cache_path /var/cache/nginx seviyeleri=1:2 keys_zone=microcache:5m max_size=1000m; server ( listen 80; server_name example.com; # Adres önbelleğe alınmış konum / ( # Destekleyiciler için önbelleği etkinleştir ayarla $no_cache ""; # Tüm yöntemler için önbelleği etkinleştir, krem ​​GET ve HEAD if ($request_method !~ ^(GET|HEAD) ) $) ( $no_cache "1" ayarlayın; ) # İstemcinin içeriği siteye almasına izin vermek için (no_cache = 1), size verilen verilerin iki kez önbelleğe alınmadığından emin olmak güvenlidir. saniye ve kapma sonucunu kazanın if ( $no_cache = "1") ( add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; add_header X-Microcachable "0"; ) if ($ http_cookie ~* "_mcnc") ( $ no_cache "1" olarak ayarlayın; ) # Gelecekte önbellek eskimesini etkinleştirin/devre dışı bırakın no_cache proxy_no_cache $no_cache; proxy_cache_bypass $no_cache; # Gerçek sunucu proxy_pass http://appserver.example. ru; proxy_cache microcache; pro$y_$ request_uri; proxy_cache_valid 200 1s;# Sorunu algıla Thundering sürü proxy_cache_use_stale güncelleme;# Standart başlık ekle proxy_set_h başlık Ana Bilgisayar $host; proxy_set_he ader X-Real-IP $remote_addr; proxy_set_header X-Forwarded-$proxy_add_x_forwarded_for için; # 1 Mb'den büyük dosyalar önbelleğe alınamaz proxy_max_temp_file_size 1M; )

Bu yapılandırmada özel bir yer, "proxy_cache_use_stale update;" satırını alır; bu olmadan, önbelleği güncellemenin her saatinde gelen istekler aracılığıyla arka uç sunucusuna periyodik trafik patlamaları alırız. Aksi takdirde her şey standarttır ve açıklama yapılmadan anlaşılabilir.

CA'ya yakın proxy

İnternet güvenliğindeki küresel artışa bakılmaksızın, sunucunun hedef kitleye olan fiziksel mesafesi hala rolünü oynamaya devam ediyor. Tse, bir gün Amerika'da kurulacak olan sunucuda Rus sitesinin döndüğü anlamına gelir; Sağ tarafta, hizmet planı da dahil olmak üzere sunucuları kordonun dışına dağıtma olasılığı yüksektir. Bu nedenle, kâr uğruna, görünüm daha büyüktür yüksek hız vіddachi, kurnazlığa gider.

Olası seçeneklerden biri: ana üretken sunucuyu Zahodі'da barındırın ve statiğin Rusya topraklarına yayılmasına izin veren ön uç kaynakları için daha da güçlü değil. Ciddi vitratlar olmadan shvidkost'ta kazanmasına izin verin. ön uç için nginx yapılandırması, bu durumda affedeceğiz ve hepimiz proxy'nin uygulamasını biliyoruz:

# vi /etc/nginx/sites-enabled/proxy # 100 GB depolama proxy_cache_path /var/cache/nginx seviyeleri=1:2key_zone=statik:32m inactive=30d max_size=100g ile 30 gün boyunca önbelleği kaydedin; server ( dinle 80; server_name example.com; # Peki, proxy konumumuz ~ * .(jpg|jpeg|gif|png|ico|css|midi|wav|bmp|js|swf|flv|avi|djvu|mp3) $ ( # Arka uç adresleri proxy_pass back.example.com:80; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_x; proxy_cache_valid 30d; proxy_Cache_header Expires"; proxy_cache_key "$uri$is_args$args"; proxy_cache_lock açık; ))

Vişnovki

Bugün, çoğu web sunucusu ve HTTP protokolü ile ilgili olmayan isimsiz görevleri nginx'in yardımıyla kırabilirsiniz. Posta proxy'si, akış sunucusu ve Git arabirimi bu görevlerden yalnızca birkaçıdır.

iRedMail - geçerli bir çıkış koduna sahip bir posta sunucusunu saklamaya hazır. Depo, Postfix SMTP sunucusuna (Mail Transfer Agent, kısaca MTA) dayanmaktadır. Koleksiyon ayrıca şunları içerir: Dovecot, SpamAssassin, Greylist, ClamAV, SOGo Roundcube, NetData ve NGINX.

güvercinlik- IMAP/POP3 sunucusu.

Spamassasin- İstenmeyen posta filtreleme.

gri liste- Zasіb, sіrih listeleri temelinde spam'e karşı savaşır.

ClamAV- Antivirüs.

Yuvarlak küpі O zaman git- Elektronik postalı robotlar için web istemcileri.

ağ verileri- Sunucu robotlarını gerçek zamanlı olarak izlemek için program.

Nginx- Web sunucusu.

Destekleyen işletim sistemleri: CentOS7, Debian 9, Ubuntu 16.04/18.04, ÜcretsizBSD 11/12і OpenBSD 6.4.

iRedMail'in, iRedAdmin posta klasörünün kendi web arabirimiyle aynı işlevselliğe sahip olan hem ücretli hem de nakit olmayan sürümleri vardır. Kopya olmayan sürümde, artık alan oluşturamaz, coristuvach'ların ve yöneticilerin ekranlarını yayınlayamazsınız. Bir takma ad oluşturmanız gerekiyorsa, iRedAdmin aracılığıyla kodsuz bir sürüm oluşturamazsınız. Neyse ki, bu, PostfixAdmin olarak adlandırıldığı için uygulamanıza izin veren ücretsiz bir çözümdür. PostfixAdmin, iRedMail'e girmek kolaydır ve onunla harikalar yaratır.

Kurulmuş

Kurulum için daha büyük işletim sistemlerinden birine ihtiyacımız var. Ubuntu Sunucusu 18.04'ü tweetleyeceğim. Ayrıca bir alan adı satın alabilir ve bir DNS bölgesi oluşturabilirsiniz. Alan adı kayıt sitenizin DNS sunucusunu kazanmak için, alan bölgesini yönetmek için iki kaydı ayırmanız gerekir: A ve MX. Ayrıca, alan adı kayıt kuruluşunuzun özel bir ofisinde yetkilendirme kurarak kendi DNS'nizi değiştirebilirsiniz.

Etki alanı bölgesinin ayarlanması, saat başı vikoristannya DNS kayıt şirketi

Saygı duyun! Saat nabuttya nalashtuvan DNS, bir tizhnya'ya kadar birkaç yıl boyunca. Sipariş tamamlanana kadar posta sunucusu düzgün çalışmayacaktır.

Yüklemek için iRedMail sitesinden güncel sürümü indirin. Bugün 0.9.9.

# wget https://bitbucket.org/zhb/iredmail/downloads/iRedMail-0.9.9.tar.bz2

Arşivleri açalım.

# tar xjf iRedMail-0.9.9.tar.bz2

Arşivi açma

І oluşturulan klasöre gidin.

# cd iRedMail-0.9.9

iRedMail yükleyicili klasör

Klasörleri kontrol etme

klasör alanı

І iRedMail kurulum komut dosyasını çalıştırın.

# bash iRedMail.sh

Mail sisteminin kurulumu başlayacaktır. Kurulum işlemi düşük güç gerektirecektir. Kurulum için bekleyelim.

koçanı vstanovlennya

Kurulum dizinini seçin

Şimdi bir web sunucusu seçmeniz gerekiyor. Seçim küçük, bu yüzden NGINX'i seçin.

Web sunucusu seçin

Artık robota bir mail sistemi ile kurulacak ve güncellenecek bir veritabanı sunucusu seçmek gerekiyor. MariaDB'yi seçin.

Veritabanı sunucusunu seçin

Veritabanı için kök parolayı ayarlayın.

Bir veritabanı parolası parolası oluşturun

Şimdi mail domainimizi belirtiyoruz.

Posta etki alanı oluşturma

Yönetici ekranında bir şifre oluşturalım [e-posta korumalı] alan.ru.

Posta yöneticisi parolası oluşturma

Web Bileşenlerini Seçin

Düzeltme tarafından onaylandı.

Onay onayı

Kurulum çalışıyor.

Kurulmuş

Kurulum tamamlandıktan sonra kurallar onaylanır. iptables için SSH ve güvenlik duvarını yeniden başlatın. iRedMail'de çalışıyor iptables. Ubuntu'da, güvenlik duvarı yönetim yardımcı programını değiştirmek en yaygın olanıdır. UVW. Böyle bir ihtiyacınız varsa, yükleyin UVW (uygun kurulum ufw) ve b kurallarını ekleyin UVW(Kıç: ufw "nginx full"e izin verir veya ufw Postfix'e izin ver) posta sunucusu robotunu engellemeden. Komutun yardımıyla mevcut kurallar listesine bakabilirsiniz: ufw uygulama listesi. fark edelim UVW: ufw etkinleştir.

iptables kuralı oluşturma

Güvenlik duvarını yeniden başlat

Hangi iRedMail kurulumu tamamlandı. Sistem bize web arayüzlerinin adreslerini ve oturum açma verilerini verdi. Posta sisteminin tüm bileşenlerini yükseltmek için sunucuyu yeniden yapılandırmanız gerekir.

Kurulumun tamamlanması

Tekrar ilgilenelim.

# yeniden başlat

Nalaştuvannya

Koçanı için, her şeyin işe yaraması için perekonatsya gereklidir. Adres için iReadAdmin giriş paneline gitmeyi deneyelim https://domain/iredadmin. Giriş yapmak [e-posta korumalı] alan.ru, şifre kurulum sırasında oluşturuldu. Є Rus arayüzü.

Yak bachimo, her şey çalışıyor. iRedAdmin'e girerken, her şey için daha iyisi, bir sertifika ile bağlanmış güvenlik affını aldınız. Bu, iRedMail'in tarayıcının kurulu olduğu dikilmiş kendinden imzalı bir sertifikaya sahip olabilmesine bağlıdır. Bu sorunu çözmek için geçerli bir SSL sertifikası yüklemeniz gerekir. є alımlarınız varsa yoga yükleyebilirsiniz. Uygulamada Let's Encrypt gibi masrafsız bir SSL kuracağım.

Let's Encrypt SSL Sertifikasını Yükleme

Ek certbot yardımcı programı için sertifikayı yükleyin. Dodamo deposu anında.

# add-apt-deposu ppa:certbot/certbot

Gerekli bileşenlerle birlikte certboot'un kendisini kuralım.

# uygun kurulum python-certbot-nginx

Sertifikayı alıyoruz.

# certbot --nginx -d alan.ru

Komutu çalıştırdığınızda, sistem sizden bir e-posta adresi girmenizi isteyecek, girin. Bu nedenle, her şey için af alırsınız, çünkü sertifikanın oluşturulduğu sunucu bloğunu bilmek imkansızdır. Bu durumda, normaldir, herhangi bir sunucu bloğunun herhangi bir parçasına sahip değiliz. Bizim için sertifikayı almak smut.

Sertifikanın geri çekilmesi

Bachimo gibi, sertifika başarıyla geri alındı ​​ve sistem bize sertifikanın kendisine ve anahtara giden yolları gösterdi. Kok bize yakraz ve ihtiyacımız var. "/etc/letsencrypt/live/domain" klasöründe saklanan 4 dosyayı aldık. Şimdi, dikilmiş sertifikayı benim tarafımdan alınan sertifika ile değiştirmek için web sunucusuna sertifikamız hakkında bilgi vermek gerekiyor. Bunun için sadece bir dosyayı düzenlememiz gerekiyor.

# nano /etc/nginx/templates/ssl.tmpl

Kalan iki yeni satırda değiştiriyorum.

SSL sertifikasını değiştirin

Sertifika geri çekildiğinde sistemin bize söylediği gibi, dosyadan yola giden yolları değiştiriyoruz.

SSL sertifikasının değiştirilmesi

І NGINX'i yeniden başlatın.

# hizmet nginx yeniden başlatma

Şimdi tekrar giriş yapmayı deneyin iRedAdmin.

SSL sertifikasının yeniden doğrulanması

Sertifika için af yok. Sertifika geçerlidir. Kaleye basabilir ve gücün yogasına hayran kalabilirsiniz. Certboot sertifikasının süresi sona erdikten sonra otomatik olarak güncellenebilir.

Şimdi Dovecot ve Postfix sertifikalarından bahsedelim. Yazılabilir olan iki yapılandırma dosyası vardır. Vikonuemo:

# nano /etc/dovecot/dovecot.conf

Blok biliyoruz:

#SSL: Genel ayarlar.

І bizim için bir sertifika reçete minyaєmo.

Dovecot için sertifikanın değiştirilmesi

Ayrıca "ssl_protocols" satırına da dikkat edin. Dovecot'u yeniden başlatırken lütfen onu ssl_protocols'dan kaldırmayı düşünün.

# nano /etc/postfix/main.cf

Blok biliyoruz:

# SSL anahtarı, sertifika, CA

І Sertifikamızın dosyalarında yeni bir şekilde değişiklik yapın.

Postfix için sertifikayı değiştir

Sertifikanın kurulumunun tamamlandığı kişi. Dovecot ve Postfix'i yeniden başlatmak veya daha iyisi sunucuyu yeniden başlatmak gerekiyor.

# hizmet güvercini yeniden başlatma

# yeniden başlat

PHPMyAdmin'i Yükleme

Bu nokta çok net değil, ancak veritabanlarıyla manuel çalışma için vikonati yoga ve PHPMyAdmin'i kurmanızı öneririm.

# apt phpmyadmin'i kurun

Yükleyici, PHPMyAdmin'i kurmak için robotu bir tür web sunucusuyla besler, çünkü NGINX listede yok, sadece SEKME tuşuna basın ve gidelim.

PHPMyAdmin'i Yükleme

Kurulum tamamlandıktan sonra, phpmyadmin'in dizinde bir çeşit kilitleme ile bir sembolik bağlantı oluşturma ihtiyacını kazanması için NGINX çalışır.

# ln -s /usr/share/phpmyadmin /var/www/html

gitmeye çalışırım https://domain/phpmyadmin/

PHPMyAdmin çalışır. Bağlantı bir sertifika ile korunmaktadır, yıllık af yoktur. Hadi gidelim. Bir veritabanı yöneticisi oluşturalım danih MySQL(MariaDB).

# mysql

І MariaDB yönetim konsolu tarafından tüketilir. Aşağıdaki robimo komutlarını verin:

MariaDB > KULLANICI OLUŞTUR "admin"@"localhost" "şifre" TARAFINDAN TANIMLANIR;
MariaDB > *.* ÜZERİNDEKİ TÜM AYRICALIKLARI GRANT SEÇENEĞİ İLE "admin"@"localhost" İÇİN VERİN;
MariaDB > FLUSH AYRICALIKLARI;

MySQL Koristuvach'ın Oluşturulması

Усі Tamam, vicon girişi. PHPMyAdmin kullanıma hazır.

PostfixAdmin'i Yükleme

PHPMyAdmin gibi PostfixAdmin ilkesi kurulmamış olabilir. Posta sunucusu mucizevi bir şekilde pratiktir ve herhangi bir bileşen içermez. Ancak, posta takma adları oluşturamazsınız. Hiçbir şeye ihtiyacınız yoksa, cesurca atlayabilirsiniz. Hâlâ bir takma ada ihtiyacınız varsa, iki seçeneğiniz vardır: iReaAdmin'in ücretli sürümünü satın almak veya PostfixAdmin'i yüklemek. Açıkçası, veritabanına manuel olarak takma adlar yazarak ek yazılım olmadan çalışmak mümkündür, ancak elle değil ve herkes için değil. Bir bakışta iRedMail ile yüklenen ve entegre olan PostfixAdmin'i hacklemenizi öneririm. Kuruluma başlayalım:

# uygun postfixadmin yükleyin

Bekleyelim ve programın sistem veritabanı için bir şifre oluşturalım.

PostfixAdmin'i Yükleme

PostfixAdmin'i Yükleme

PHPMyAdmin'i kurmadan önce benzerlik için Robimo sembolik bağlantısı.

# ln -s /usr/share/postfixadmin /var/www/html

Robimo Koristuvacha, web sunucusu olarak katalog yöneticisi tarafından başlatılır. NGINX tipimiz www-data adı altında çalışmaktadır.

# chown -R www-data /usr/share/postfixadmin

Şimdi PostfixAdmin yapılandırma dosyasını düzenlememiz ve veritabanı hakkında iRedAdmin gibi yeni bilgileri eklememiz gerekiyor. Tanıtım için bu veritabanına vmail denir. PHPMyAdmin'e giderseniz, orada sohbet edebilirsiniz. Bu yüzden PostfixAdmin'in veritabanında anında değişiklik yapabilmesi için PostfixAdmin yapılandırmasında yazılır.

# nano /etc/postfixadmin/config.inc.php

Satırları biliyoruz:

$CONF["database_type"] = $dbtype;
$CONF["database_host"] = $dbserver;
$CONF["database_user"] = $dbuser;
$CONF["database_password"] = $dbpass;
$CONF["veritabanı_adı"] = $dbname;

І bir bakışta getirdi:

$CONF["database_type"] = "mysqli"; # Veritabanı Türü
$CONF["database_host"] = "localhost"; # Veritabanı sunucusu ana bilgisayarı
$CONF["database_user"] = "admin"; # vmail veritabanına yazma erişimi ile giriş yapın. Kreasyonlar yöneticisinden önce fitil yapabilirsiniz
$CONF["database_password"] = "şifre"; # Belirtilen şifrenin şifresi
$CONF["database_name"] = "vmail"; # Veritabanı adı iRedMail

Veritabanı ile ilgili bilgilerin girilmesi

SOGo posta web istemcisini kazanmayı planlıyorsanız, bir ek oluşturmanız ve paragraftaki PostfixAdmin şifrelemesini hatırlamanız gerekir. $CONF["şifrele"] H "md5crypt"üzerinde "dovecot:SHA512-CRYPT". Sakıncası yoksa, SOGo'da yetkilendirmeye çalıştığınızda, bunu PostfixAdmin ile oluşturacağız, yanlış bir giriş veya şifreyi affedeceksiniz.

Şifreleme türünü değiştirme

Artık kurulumu başarıyla tamamlamak ve af almamak için veri tabanına kadar beklemek gerekiyor. PHPMyAdmin aracılığıyla manuel olarak zrobiti. vmail veritabanını seçip SQL sekmesine geçiyoruz. Vіkni'de giriyoruz:

posta kutusunda DROP INDEX etki alanı;
takma ad üzerinde DROP INDEX etki alanı;
ALTER TABLE diğer adı SÜTUN EKLE `goto` metni NOT NULL;

Veritabanına kadar sor

"İleri" ye basıyorum. Artık hepimiz hazırız, PostfixAdmin web arayüzüne gidebilir ve kurulumu tamamlayabilirsiniz. Hangi tarayıcı için yazmanız gerekir: https://domain/postfixadmin/setup.php.

Böyle görünmek suçlu:

PostfixAdmin'i Yükleme

Talimatlar için her şey bozulursa, aflar suçlu değildir. Hala olacaksa, onları çıkarmalısınız, aksi takdirde sistem devam etmenize izin vermeyecektir. Kurulum şifresini ayarlayın ve " Şifre karması oluştur Sistem, parametreye eklenmesi gereken bir parola karması oluşturur. $CONF["setup_password"].

PostfixAdmin kurulumunu tamamlama

Yapılandırma dosyasındaki parametreleri değiştirme

Şimdi yeni bir parola girin ve bir PostfixAdmin yöneticisi oluşturun. Postmaster oturum açma ile bir yönetici oluşturmayın, kırıklarda iRedAdmin yönetim panelinde oturum açma ile ilgili sorunlar olabilir.

PostfixAdmin yöneticisi tarafından oluşturuldu

Her şey yapıldı, yönetici. Girişi kazanabilirsiniz.

Güvenlik nedenleriyle, setup.php dosyasını postfixadmin dizininde yeniden adlandırmanın veya silmenin daha iyi olduğunu lütfen unutmayın.

Hadi devam edelim: https://domain/postfixadmin/ ve eğik verilerin oluşturulmasını tanıtıyoruz. PostfixAdmin, iRedAdmin gibi, Rusça dili mevcuttur. Yetkilendirme saatini tersine çevirebilirsiniz.

Bir coristuvach'ın posta ekran görüntüsünü oluşturmaya çalışalım.

iRedMail modüllerinin Bildirimi/Bildirimi

iRedMail modüllerinin arkasında iRedAPD'yi destekler. Çalışma modüllerinin kayıtlı olduğu maє yapılandırma dosyasında. Başka bir modüle ihtiyacınız yoksa, onu yapılandırma dosyasından kaldırabilir ve kullanmayı bırakabilirsiniz. Vikonuemo:

# nano /opt/iredapd/settings.py

Sırayı biliyoruz" eklentiler Ve görünüşe göre herhangi bir bileşene ihtiyacınız yok. bileşeni alacağım "gri liste". Vіn zvichayno dosit, spam'den etkili bir şekilde korur, ancak genellikle yapraklara ulaşmaz ve ihtiyaç duymaz.

Greylist (sir list), posta yöneticisinin sunucusunun davranışının analizine dayanan otomatik spam koruması için bir teknolojidir. "Gri listeleme" etkinleştirildiğinde, sunucu önce bilinmeyen bir adresten gelen listeleri kabul etmeye başlayacak ve sizi af konusunda bilgilendirecektir. Böyle bir zamanda, sunucu gücü tekrarlamaktan suçludur. Spam gönderen programlar buna çekinmemek için diyor. Çarşaf tekrar üst üste bindirilir edilmez, şarap 30 gün boyunca listeye eklenir ve değişim ilk kez gönderilir. Vykoristovuvat tsey modülü, kendiniz için değil.

Gönderilen modüllerin bildirimi / uyarısı

Değişiklikleri yaptıktan sonra yeniden başlatmak gerekiyor iRedAPD.

# hizmet iredapd yeniden başlatma

Posta sunucusu testi

iRedMail posta sunucusunun kurulumu kimlerde tamamlandı. Son aşamaya geçebilirsiniz - test. İki posta ekran görüntüsü alıyoruz. Perevіrka için biri iRedAdmin aracılığıyla, diğeri PostfixAdmin aracılığıyla ve listeyi bir posta kutusundan diğerine değiştirin. iRedAdmin'in bir ekran görüntüsü var [e-posta korumalı] alan.ru. PostfixAdmin - [e-posta korumalı] alan.ru

iRedAdmin'de bir koristuvach oluşturma

PostfixAdmin'de bir koristuvach oluşturma

Coristuvachi'nin olduğuna inanmak zor.

PostfixAdmin posta kutularındaki "Kime" sütununa saygı duyarsanız, iRedAdmin ve PostfixAdmin'de oluşturulan posta kutuları arasındaki farkı işaretleyebilirsiniz. iRedAdmin'de oluşturulan ekran görüntüleri " olarak işaretlenir. sadece ileri", ancak PostfixAdmin'de -" olarak oluşturuldu Posta kutusu Uzun zamandır neden bu kadar farklı olduğunu ve aralarında nasıl bir fark olduğunu çözemedim ve bir ayetle karşılaştım. iRedAdmin'deki kutular, diğer adlar olmadan oluşturulur ve PostfixAdmin'deki kutular, kendi adlarıyla oluşturulur.

Takma adları görürseniz, posta kutuları iRedAdmin'de oluşturulmuş gibi görüntülenecektir. sadece ileri".

Vydalennya takma adı

Takma ad kaldırıldı. PostfixAdmin'i kontrol edin.

Yak bachimo tüm kutuları "Yalnızca İleri" oldu. Yani sadece kendi üzerinde iRedAdmin takma adında oluşturulan bir kutuda oluşturmak için "Posta Kutusu" olacaksınız. Prensip olarak, pratikliği umursamıyoruz. PostfixAdmin'de oluşturulan bir posta kutusunda takma ad oluşturamazsınız. Takma adın oluşturulması için yapılan değişikliğin şimdiden yeniden tasarlanması gerekecektir. Takma adlardan bahsetmeden önce, iRedMail'in yeni sürümünde Postfix kartlarından birinde bir takma admış gibi değişiklik yapmak gerekiyor. Başka bir şey oluşturmazsanız, takma ad oluşturma işlemi çalışmayacaktır. Kimin dosyaya ihtiyacı var /etc/postfix/mysql/virtual_alias_maps.cf doğru:

Vikonuemo:

# nano /etc/postfix/mysql/virtual_alias_maps.cf

düzeltirim.

Nalashtuvannya takma adı

Postfix'i yeniden başlatın:

# hizmet postfix yeniden başlatma

Bir şey varsa, her şey yapılabilir.

Ve böylece, postayı yeniden kontrol etmeye devam edelim. çekmece yapmak kullanıcı1 Roundcube'dan geçeceğiz ve kutuya kullanıcı2- SOGo aracılığıyla ve sayfayı ekrandan düzeltin kullanıcı1üzerinde kullanıcı2 geri döndüm.

Roundcube ile sacın güçlendirilmesi

SOGo'dan bir yaprak almak

Sayfayı SOGo'ya göre güçlendirme

Roundcube'den yaprak çıkarma

Her şey sorunsuz çalışıyor. Sayfa teslimi iki ila beş saniye sürer. Böylece yapraklar mucizevi bir şekilde Yandex sunucusuna ve mail.ru'ya (yeniden yazılmıştır) teslim edilir.

Artık takma adı değiştirebiliriz. bir kutu yapalım kullanıcı3 ve ekran görüntüsünden zrobimo takma adı kullanıcı1 kutuda kullanıcı2. І ekran görüntüsünden düzeltilmiş sayfa kullanıcı3 kutuda kullanıcı1. Hangi sayfa ile ekrana gelebilirim kullanıcı2.

oluşturma takma adı

Sayfayı user3'ün ekran görüntüsünden user1'in ekran görüntüsüne güçlendirme

Kullanıcı2 ekranındaki sayfayı kaldırma

Z robot takma tezh bıyık harazd.

Yerel posta istemcisi aracılığıyla posta sunucusunun robotuna itiraz edilir. popoda görebiliriz Mozilla Thunderbird. İki tane daha coristuvachiv yapalım: müşteri1і müşteri2. IMAP, aksi takdirde POP3 yoluyla bir ekran eklenebilir ve saniyede bir ekran görüntüsü listesi eklenebilir.

IMAP bağlantısı

POP3 üzerinden bağlantı

İstemci 1'den İstemci 2'ye bir sayfa zorlama.

Müşteri 1 tarafından yayınlandı

Otrimanya, İstemci 2'de

Ben ters sırada.

Müşteri 2 tarafından yayınlandı

İstemci 1'de Otrimanya

Herşey çalışıyor.

Adrese nasıl gidilir: https://domain/netveri, grafikleri posterigati yapabilirsiniz bir sistem haline gelir.

Visnovok

Bu kurulumda, iRedMail posta sisteminin kurulumu ve test edilmesi tamamlanmıştır. Sonuç olarak, güçlü bir SSL sertifikasına, iki farklı web posta istemcisine, iki kontrol paneline ve ayrıca postada yüklü olan anti-spam ve anti-virüse sahip tamamen ücretsiz bir tam posta sunucusunu kaldırdık. İhtiyaçlarınız için web posta istemcilerini Microsoft Outlook veya Mozilla Thunderbird gibi yerel posta istemcileriyle değiştirebilirsiniz. Posta web istemcileri kurmayı planlamıyorsanız, bunları kuramazsınız, bu nedenle sunucuyu kurmayacağız, hangisine daha fazla ihtiyacınız varsa onu kuracağız. Özellikle SOGo'yu seviyorum, çünkü bu mobil cihazlar için optimizasyon arayüzü, akıllı telefondan e-postaya manuel olarak bakmak daha iyi. Aynısı NetData ve iRedAdmin ile yapılmalıdır, düzeltmeyi planlamıyorsanız kurmayın. Tsya posta sistemi kaynaklar için çok güçlü değil. Her şey dayanmaktadır VPS sunucuları 1024 MB RAM ve bir sanal işlemci ile. Verilen posta sistemine göre yemek kaybettiğiniz için yorumlara yazın.

not Bu ürün 1 GB RAM'e sahip çeşitli işletim sistemlerinde (Ubuntu, Debian, CentOS) test edilirken ClamAV için 1 GB'ın yeterli olmadığı tespit edildi. Merhamet pov'yazanu z veri tabanı için vikoristanny 1 GB bellek antivirüs posilavsya ile Mayzhe zavzhd. Debian ve Ubuntu işletim sistemlerinde, antivirüs sunucudan geçen postayı taramadı, aksi takdirde her şey yolunda gitti. CentOS'ta durum biraz farklıydı. Clamd servisi sistemi tekrar kapattı ve aynı zamanda sunucunun normal çalışmasını devre dışı bıraktı. Web arayüzüne giriş yapmaya çalışırken, NGINX periyodik olarak 502 ve 504 af gördü. Postane bir anda tezh kırdı. 2 GB'a kadar RAM eklerseniz, robotik anti-virüs ve sunucu ile ilgili her türlü günlük sorun ortadan kalkmadı. ClamAV posta sunucusunu tarar, posta sunucusundan nasıl geçilir, günlüklere yazma hakkında. Test edildiğinde, virüs kasada bloke edildi. Bellek kurtarma yaklaşık 1.2 - 1.7 GB idi.

Nginx- Dünya dışında küçük, daha İsveçli, işlevsel web sunucusu ve posta proxy sunucusu, perakendeci Igor Sisoev (rambler.ru). Küçük bir kaynak tasarrufu yayı, sistemin güvenliği ve robotiğinin yanı sıra yapılandırma esnekliği, İnternet sayesinde nginx sunucusu gibi daha önemli sunuculara ön uç olarak genellikle muzaffer Apaçi, yüksek emelleri olan projelerde. Klasik seçenek zv'yazuvannya, Nginx - Apaçi - hızlıCGI. Böyle bir şema ile pratik yapın, nginx sunucusu, HTTP aracılığıyla erişilebilen tüm istekleri kabul edin ve yapılandırmadaki ve isteğin kendisindeki geri dönüşte, isteği kendiniz işleme alıp almayacağınızı kontrol edin ve müşteriye isteği göndermeye hazır olduğumu veya isteği sağlamaya hazır olduğumu söyleyin. işleme, arka uçlardan biri ( Apaçi veya hızlıCGI).

Görünüşe göre, Apache sunucusu, cilt bir okremu işleminde (iş parçacığı) işleniyor, söylenmesi gerektiği gibi, bunu çok sayıda sistem kaynağıyla yapmak gerekiyor, örneğin, 10-20 gibi işlemler var, çok değil ve 100-500 ve üzeri varsa sistem hiç eğlenceli değil.

Böyle bir durumu tespit etmeye çalışalım. diyelim ki Apaçi istemcilerden 300 HTTP isteği gelir, 150 istemci mobil video hatlarında oturur ve aynı sayıda İnternet kanalında 150 istemci daha modemlere gitmez. Bu durum hakkında ne düşünüyorsunuz? Bir vіdbuєtsya nasledne, web sunucusu Apache, schobit qі 300 z'єdnan, işleme (stream) göre cilt üzerinde oluştururum, şarapların içeriği hızlı bir şekilde oluşturulur ve müşterinin 150 müşterisi isteklerinin sonucunu hemen alır , hizmet kaynaklarının süreci öldürülecek ve kaynaklar öldürülecek ve 150 daha fazla ve taleplerinizin sonuçları dar bir internet kanalı üzerinden doğru bir şekilde toplanacak, ardından sistemde 150 işlem var. Apaçi, ne kontrol edilmeli, istemciler web sunucusu tarafından oluşturulan içeriği alıp çok fazla sistem kaynağı tüketiyorsa. Açıkçası durum varsayımsal, ama sanırım özü anladım. Yukarıda açıklanan durumu düzeltin ve iletişime yardımcı olun. Müşteriden gelen talebin tamamını okuduktan sonra, şarap işlemeye aktarılır. Apaçiİçeriği kendi hızında üreten ve mümkün olduğunca çabuk çeviren ve mümkünse Nginx'i desteklemeye hazır olan , sakin bir vicdanla süreci sonlandırın ve şarap ödünç almak gibi sistem kaynaklarını çağırın. Nginx web sunucusu, isteğin sonucu otrimavshi Apaçi, arabelleğe yaz veya diskteki bir dosyaya yaz ve belki biraz daha uzun süre doğru müşterilere vermek için, bunu yaparken, iş süreci o kadar az kaynak kullanıyor ki .. "komik. bunun hakkında konuşun" ©. :) Böyle bir plan, sistem kaynaklarından tasarruf etmek için tekrar ediyorum, ancak Nginx'in çalışma süreçleri az miktarda kaynak tasarrufu sağlar ve bu büyük projeler için daha önemlidir.

Ve Nginx sunucusunun içinde olduğu gerçeğinin sadece küçük bir kısmı, verileri ve robotu önbelleğe alma yeteneğini unutmayın. memcached. ana listeleyeceğim işlevsellik Nginx web sunucusu.

HTTP sunucusu olarak Nginx sunucu işlevi

  • statik içeriğin, dizin dosyalarının, dizinlerin listelenmesinin, açık dosyalar için tanımlayıcıların önbelleğinin işlenmesi;
  • Hızlandırılmış proksuvannya z kashuvannya, rozpodіl navantazhennya bu vіdmovostіykіstyu;
  • Hızlandırılmış pidtrimka hızlıCGI nakit sunucular, rozpodіl navantazhennya ve vіdmovostіykіstyu;
  • Modüler yapı, çeşitli filtreler için destek (SSI, XSLT, GZIP, indirme, yığın çıktı);
  • SSL desteği ve TLS SNI uzantısı;
  • ip tabanlı veya isme dayalı sanal sunucular;
  • KeepAlive ve z'ednannami tarafından ardışık düzene sahip robot;
  • Herhangi bir zaman aşımını ve arabellek sayısını eşit olarak yapılandırma imkanı Apache sunucusu;
  • Vikonannya raznomanіtnyh ve müşterinin adresi ile zalezhno;
  • Ek normal virüsler için URI'yi değiştirin;
  • 4xx ve 5xx için afların özel tarafları;
  • Müşterinin adresi veya şifresine dayalı olarak erişim değişimi;
  • Günlük dosyası biçimlerinin ayarlanması; günlük döndürme;
  • Müşteri için güvenlik değişimi;
  • Bir saatlik bağlantı ve içecek değişimi;
  • PUT, DELETE, MKCOL, COPY ve MOVE yöntemleri için destek;
  • Robotun dişleri olmadan sunucunun güncellemesini değiştirmek;
  • Uyanmak Perl;

Bir posta proxy sunucusu olarak Nginx sunucu işlevi

  • IMAP/POP3 arka ucuna iletme, güçlü HTTP kimlik doğrulama sunucusu;
  • SMTP'nin harici HTTP sunucusu kimlik doğrulamasına iletilmesi ve dahili SMTP sunucusuna iletilmesi;
  • Kimlik doğrulamada saldırgan yöntemlere dair bir ipucu:
    • POP3 - KULLANICI/GEÇİŞ, APOP, KİMLİK GİRİŞİ/DÜZ/CRAM-MD5;
    • IMAP - GİRİŞ, DOĞRULAMA GİRİŞİ/DÜZ/CRAM-MD5;
    • SMTP - AUTH LOGI/PLAIN/CRAM-MD5;
  • SSL desteği;
  • STARTTLS ve STLS'yi kırpın;

Nginx web sunucusu tarafından desteklenen platformun işletim sistemleri

  • FreeBSD, 3 ila 8 - platformlar, i386 ve amd64;
  • Linux, 2.2'den 2.6'ya - i386 platformu; Linux 2.6 - amd64;
  • Solaris 9 - i386 ve sun4u platformları; Solaris 10 - i386, amd64 ve sun4v platformları;
  • MacOS X platformları ppc, i386;
  • Windows XP, Windows Server 2003; (üzerinde Narazi beta testi aşamasında)

Nginx sunucusunun mimarisi ve ölçeklenebilirliği

  • Ana (ana) süreç, ayrıcalıksız bir çekirdek altında çalıştığı için çalışma süreçlerinin bir çaçası (konfigürasyon dosyasına dahildir);
  • Z'ednan'ı işlemeye yönelik saldırgan yöntemler için destek:
    • Seçme- Standart yöntem. Bu platformda verimli bir yöntem bulunamadığından varsayılan Nginx modülü otomatik olarak alınır. --with-select_module veya --without-select_module konfigürasyonunda ek parametreler için primus'u etkinleştirebilir veya modül seçimini devre dışı bırakabilirsiniz.
    • anket- Standart yöntem. Bu platformda verimli bir yöntem bulunamadığından varsayılan Nginx modülü otomatik olarak alınır. --with-poll_module veya --without-poll_module yapılandırmasında ek parametreler için primus'u etkinleştirebilir veya modül seçimini devre dışı bırakabilirsiniz.
    • kuyruk - etkili yöntem FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 ve MacOS X işletim sistemlerinde oluşur.
    • epoll Linux 2.6+'da çalışan verimli bir yöntemdir. Bazı dağıtımlar, örneğin SuSE 8.2, 2.4 çekirdekli epoll'u destekleyen yamalar içerir.
    • rtsig - gerçek zamanlı sinyaller, Linux 2.2.19+'da galip gelen verimli bir yöntem. Tüm sistemi kilitlemek için 1024'ten fazla sinyal olamaz. Bu, yüksek hedefleri olan sunucular için yeterli değildir, ek çekirdek parametresi /proc/sys/kernel/rtsig-max için çekirdek sayısını artırmak gerekir. Bununla birlikte, Linux 2.6.6-mm2'den başlayarak, bu parametre günlüktür, cilt sürecinin doğası gereği, genişlemesi RLIMIT_SIGPENDING'in yardımına bağlı olan birçok sinyale sahiptir.
    • Ne zaman perepovnenny kiraz, nginx sunucusu Anket yöntemi doti yardımı için faturayı atmak ve işlemek, durum normale dönmeyecektir.
    • /dev/anket- Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ ve Tru64 UNIX 5.1A+ işletim sistemlerinde desteklenen etkili bir yöntem.
    • eventport - olay portları, Solaris 10'da yama yapılabilen etkili bir yöntem. Yamadan önce çekirdek paniğinden kurtulmak için bir yama yüklemeniz gerekiyor.
  • EV_CLEAR, EV_DISABLE (zaman sınırlı para çekme için), NOTE_LOWAT, EV_EOF, mevcut veri sayısı, af kodu gibi kqueue yöntemi için çoklu olasılıklar;
  • sendfile (FreeBSD 3.1+, Linux 2.2.+, Mac OS X 10.5+), sendfile64 (Linux 2.4.21+) ve sendfilev (Solaris 8 7/01+) ile çalışma;
  • Kabul filtresi ince ayarı (FreeBSD 4.1+) ve TCP_DEFER_ACCEPT (Linux 2.4+);
  • 10.000 etkin olmayan HTTP canlı tutma için yaklaşık 2,5 M bellek kullanılır;
  • Verileri kopyalamak için minimum işlem sayısı;

Bu malzeme NGINX Plus veya NGINX olarak işlenecektir. açık kaynak posta sunucusu veya harici posta hizmeti için proxy gibi.

Tanıtım

NGINX, posta hesaplarını barındıran yukarı akış posta sunucularından birine kadar IMAP, POP3 ve SMTP protokollerini proxy yapabilir ve bu nedenle e-posta istemcileri için tersine çevrilebilir. Thay, aşağıdakiler gibi bir dizi fayda sağlayabilir:

  • posta sunucularının sayısını kolay ölçeklendirme
  • farklı kurallara göre bir posta sunucusu seçmek, örneğin bir müşterinin IP adresine göre en yakın sunucuyu seçmek
  • yükün posta sunucuları arasında dağıtılması

Önkoşullar

    NGINX Plus (proxy e-posta trafiği için gelişmiş e-posta etkinleştirmesi gerekir) veya NGINX Açık Kaynak, e-posta proxy işlevi için --with-mail parametresini ve SSL/TLS desteği için --with-mail_ssl_module parametresini kullanarak posta modüllerini derledi:

    $ ./configure --with-mail --with-mail_ssl_module --with-openssl=[DIR] /openssl-1.1.1

    IMAP, POP3 ve/veya SMTP posta sunucuları veya harici bir posta hizmeti

SMTP/IMAP/POP3 Posta Proxy Sunucularını Yapılandırma

NGINX yapılandırma dosyası:

    posta(#...)

    posta (sunucu_adı mail.example.com; #...)

    posta (sunucu_adı mail.example.com ; auth_http localhost : 9000 /cgi-bin/nginxauth.cgi ; #... )

    Özellikle, proxy_pass_error_message yönergesini belirterek, kimlik doğrulama sunucusu gibi afları bugger'a söyleyebilirseniz. Bu, bir posta kutusunun belleği tükendiğinde kullanışlı olabilir:

    posta ( server_name mail.example.com ; auth_http localhost : 9000 /cgi-bin/nginxauth.cgi ; proxy_pass_error_message on ; #... )

    Nalashtuvati, sunucu blokları ile SMTP, IMAP veya POP3 sunucusu olsun. Dış görünüm sunucusu için şunları belirtin:

    • en Port numarası Listen yönergesinin özel protokole uyması için neye ihtiyacı var?
    • en protokol protokol yönergesi ile (belirtilmemişse, dinleme yönergesinde belirtilen bağlantı noktasından otomatik olarak algılanır)
    • izin verilen kimlik doğrulama yöntemleri imap_auth , pop3_auth ve smtp_auth yönergeleri ile:

    sunucu ( dinle 25 ; protokol smtp ; smtp_auth oturum açma düz cram-md5 ; ) sunucu ( dinle 110 ; protokol pop3 ; pop3_auth düz apop cram-md5 ; ) sunucu ( dinle 143 ; protokol imap ; )

Posta Proxy'si için Kimlik Doğrulamayı Ayarlama

POP3/IMAP/SMTP, istemciden önce harici bir HTTP kimlik doğrulama sunucusunun veya bir kimlik doğrulama komut dizisinin kimliğini doğrulamasını ister. NGINX posta sunucusu proxy'si için bir kimlik doğrulama sunucusuna sahip olmak zorunludur. Sunucu, HTTP protokolüne dayanan NGINX kimlik doğrulama protokolü gibi yedekte yardım için oluşturulabilir.

Kimlik doğrulama başarılı olursa, kimlik doğrulama sunucusu bir yukarı akış sunucusu seçecek ve isteği yeniden yönlendirecektir. Sizce server değişikliği ilerleyen satırlardan oluşacak:

HTTP/1.0 200 Tamam Yetkilendirme Durumu: Tamam Yetkilendirme Sunucusu: # posta işleme için kullanılacak olan yukarı akış sunucusunun sunucu adı veya IP adresi Yetkilendirme bağlantı noktası: # yukarı akış sunucusunun bağlantı noktası

Kimlik doğrulama başarısız olursa, kimlik doğrulama sunucusu bir hata mesajı verir. Sizce server değişikliği ilerleyen satırlardan oluşacak:

HTTP/1.0 200 Tamam Yetkilendirme Durumu: # istemciye döndürülecek bir hata mesajı, örneğin “Geçersiz oturum açma veya parola” Yetkilendirme-Bekleyin: # bağlantı kapatılana kadar kalan kimlik doğrulama denemelerinin sayısı

Her iki durumda da yanıtın içereceğini unutmayın HTTP/1.0 200 TAMAM hangi kafa karıştırıcı olabilir.

Kimlik doğrulama sunucusunun kimlik doğrulama sunucusu hakkında daha fazla bilgi edinmek için NGINX Referans belgelerinde ngx_mail_auth_http_module.

Posta Proxy'si için SSL/TLS'yi ayarlama

SSL/TLS üzerinden POP3/SMTP/IMAP kullanarak, istemci ile e-posta sunucusu arasında verilerin nasıl geçtiğini görebilirsiniz.

E-posta için SSL/TLS'yi etkinleştirmek için:

    Komut satırına nginx -V komutunu yazıp çıktıda with -mail_ssl_module satırını arayarak NGINX'inizin SSL/TLS desteğiyle yapılandırıldığından emin olun:

    $nginx -V argümanları yapılandır: ... with-mail_ssl_module

    Sunucu sertifikalarını ve özel anahtarları hata yaptığınızdan emin olun ve bunları sunucuya koyun. Sertifika, güvenilir bir Sertifika Yetkilisinden (CA) alınabilir veya OpenSSL gibi ek bir SSL kitaplığı tarafından oluşturulabilir.

    SSL açık;

    ürküyor;

    Ek SSL sertifikaları: ssl_certificate yönergesinden sertifikaların yolunu (PEM biçiminde olan) belirtin ve ssl_certificate_key yönergesinde özel anahtarın yolunu belirtin:

    posta ( #... ssl_certificate /etc/ssl/certs/server.crt ; ssl_certificate_key /etc/ssl/certs/server.key ; )

    Metinleri ssl_process ve ssl_ciphers yönergeleri ile SSL/TLS'den yalnızca güçlü sürümleri ve şifreleri tweetleyebilir veya tercih ettiğiniz protokolleri ve şifreleri yükleyebilirsiniz:

    posta ( #... ssl_protocols TLSv1 TLSv1.1 TLSv1.2 ; ssl_ciphers YÜKSEK:!aNULL:!MD5 ; )

Mail Proxy için SSL/TLS'yi Optimize Etme

Bu ipuçları, NGINX posta proxy'nizi daha hızlı ve daha güvenli hale getirmenize yardımcı olacaktır:

    Posta bağlamıyla aynı düzeyde ayarlanmış olan işçi_işlemleri yönergesinin işlemci sayısı üzerinde görünen çalışan işlem numaralarını çevirin:

    işçi_işlemleri otomatik; posta(#...)

    Otomatik ile paylaşılan oturum önbelleğini etkinleştirin ve yerleşik oturum önbelleğini devre dışı bırakın; posta (sunucu_adı mail.example.com ; auth_http localhost : 9000 /cgi-bin/nginxauth.cgi ; proxy_pass_error_message açık ; ssl açık ; ssl_certificate /etc/ssl/certs/server.crt ; ssl_certificate TLSv1Sv TLSv1Svsv1Sv 2 ;ssl_ciphers HIGH:!aNULL:!MD5 ; ; protokol pop3 ; pop3_auth düz apop cram-md5 ; ) sunucu (dinle 143 ; protokol imap ; ) )

    Bence üç elektronik proxy sunucusu var: SMTP, POP3 ve IMAP. SSL ve STARTTLS desteği ile yapılandırılmış tüm sunucular. SSL oturum parametreleri önbelleğe alınacaktır.

    Whip proxy sunucusu HTTP kimlik doğrulama sunucusu – bu yapılandırma bu makalenin kapsamı dışındadır. Sunucuya bildirilen tüm alarmlar istemcilere bildirilecektir.

kapatırsa