บล็อกของดาเนียล
Mrz/10 27 20

เกมส์โกงแผ่น : Debian Lenny Mail Server : Postfix - Courier - SSL SSL SASL กวดวิชา - MD5 TLS เสมือนนามแฝง ClamAV Procmail SpamAssassin

ผมอยากที่จะทำอีกครั้งกับเซิร์ฟเวอร์อีเมล แต่น่าเสียดายที่ผมมักจะสับสนเพราะ -- มากขององค์ประกอบที่แตกต่างกันจำเป็นต้องสื่อสารกับแต่ละอื่น ๆ -- ขึ้นอยู่กับการตั้งค่าของคุณ ด้วยเหตุนี้ที่นี่เป็นแผ่นโกงของฉันสำหรับเซิร์ฟเวอร์อีเมลบนโฮสต์อินเทอร์เน็ตกับ FQDN มันได้รับการทดสอบบน Debian Lenny

ทั้งหมดเชื่อมต่อภายนอกจะถูกเข้ารหัสหรือ obfuscated ด้วย MD5 hashes pasword อัด จดหมายขาเข้ามีการตรวจสอบสแปมและไวรัสและผู้ใช้สามารถอ่านอีเมลของพวกเขาผ่าน IMAP

und gesichtere Verbindungen grün . ในภาพข้างบน daemons สีเหลือง, การเชื่อมต่อฐานข้อมูลใบหน้าสีเทาและสีเขียว

สิ่งที่แต่ละองค์ประกอบจะทำอย่างไร

  • ต้องการส่งจดหมาย Postfix ที่ได้รับลูกค้า นี้เขาส่งไปยังเซิร์ฟเวอร์ที่ถูกต้องบนอินเทอร์เน็ต นอกจากนี้ในจดหมาย entfängt Postfix จากอินเทอร์เน็ตสำหรับผู้ใช้กับกล่องจดหมายบนเซิร์ฟเวอร์
  • นามแฝงเสมือน (ส่วนหนึ่งของ Postfix) เป็นฐานข้อมูลที่มีอีเมล Postfix รับอีเมลที่ผู้ใช้สามารถเชื่อมโยงแต่ละ
  • Saslauthd authenticates ผู้ใช้ต้องการที่จะส่งอีเมลผ่าน Postfix ผ่าน SMTP เขาจะตรวจสอบชื่อผู้ใช้และรหัสผ่านด้วย MD5 hashes อัด
  • Sasldb เป็นฐานข้อมูลอาจขอจากชื่อผู้ใช้ saslauthd ใช้และรหัสผ่าน
  • Courier - IMAP คือ mail ของลูกค้าเพื่อให้ผู้ใช้อีเมล Maildir จากพวกเขาสามารถใช้ได้
  • Courier - authdaemon ผู้ใช้สิทธิ์อ่านจดหมายของ Courier - IMAP เขาจะตรวจสอบชื่อผู้ใช้และรหัสผ่านด้วย MD5 hashes อัด
  • Userdb (ส่วนหนึ่งของ Courier) เป็นฐานข้อมูลอาจขอจาก Courier - authdaemon ชื่อผู้ใช้และรหัสผ่าน
  • Procmail เป็นตัวกรองที่ทำงานผ่านอีเมลที่ได้รับทุกคนต้อง Procmail ไปผ่านอีเมลไปที่ตัวกรองสแปมและไวรัสและสแกนเนอร์แล้วให้พวกเขาจากผู้ใช้
  • Clamassassin เป็นเครื่องมือที่มีขนาดเล็กที่ให้การเชื่อมต่อระหว่าง Procmail และ ClamAV มันจะไปผ่านทางอีเมล์เท่านั้นที่จะ ClamAV
  • SpamAssassin (spamd) ตรวจสอบสแปม เป็นคะแนนของอีเมลแต่ละที่บอกวิธีการที่น่าจะเป็นที่อีเมลขยะมีการตรวจสอบ
  • Maildir กล่องจดหมายของที่นี่มีอีเมลของผู้ใช้ของระบบ มันเป็นไดเรกทอรีปกติในระบบไฟล์ ลูกค้า IMAP สามารถดึงข้อมูลได้จากที่นั่น

การจัดเตรียม

การติดตั้งแพคเกจที่จำเป็นทั้งหมด

  apt - get ปรับปรุง & & apt - ได้รับการอัพเกรด
 apt - get install postfix postfix postfix - doc libsasl2 - 2 - bin sasl2 libsasl2 โมดูล clamassassin จัดส่ง - IMAP - SSL ClamAV Procmail SpamAssassin 

Courier Konfigfragen

  • เว็บไดเรกทอรีสำหรับการบริหาร? ไม่มี

Postfix Konfigfragen

  • อินเทอร์เน็ตเซิร์ฟเวอร์
  • ชื่อ E - mail : resolvable โดย DNS FQDN ของเซิร์ฟเวอร์ (เช่น meinedomain.de)

การกำหนดค่าของ Postfix อย่างต่อเนื่อง

  กำหนดค่า dpkg - postfix 

เพิ่มเติม Postfix Konfigfragen

  • อินเทอร์เน็ตเซิร์ฟเวอร์
  • ผู้ที่ควรจะถูกส่งต่อข้อความโดย root : ไม่มีอะไรมาแทรกในภายหลัง
  • คอมพิวเตอร์สำหรับวัตถุประสงค์ของระบบคอมพิวเตอร์เครื่องนี้มีการพิจารณา : โดเมนทั้งหมดที่มี Postfix จะได้รับจดหมายและมีรายการ DNS สำหรับ IP ของเซิร์ฟเวอร์ที่ (เช่น meinedomain.de, meinanderedomain.de, meinedrittedomain.de)

postfix

ไฟล์ config สำหรับ Postfix

  # / etc / postfix / main.cf

 smtpd_banner = $ myhostname ESMTP $ myhostname (Debian / GNU)
 BIFF = ไม่มี
 append_dot_mydomain = ไม่มี
 readme_directory = / usr / share / doc / postfix                                 

 # TLS ที่
 smtpd_use_tls = ใช่                                                         

 smtpd_tls_session_cache_database = btree : data_directory $ {} / smtpd_scache
 smtp_tls_session_cache_database = btree : data_directory $ {} / smtp_scache
 myhostname = meinedomain.de
 alias_maps hash = : / etc / aliases
 alias_database hash = : / etc / aliases
 myorigin = / etc / mailname
 mydestination = meinedomain.de, โดเมนอื่น ๆ ของฉันโดเมน localhost ฉันที่สาม, 127.0.0.1
 relayhost =
 mynetworks = 127.0.0.0 / 8 [: : ffff : 127.0.0.0] / 104 [: : 1] / 128
 mailbox_command = 0
 recipient_delimiter = +
 inet_interfaces = ทั้งหมด
 html_directory = / usr / share / doc / postfix / html
 inet_protocols = IPv4

 # Auth ผ่าน SASL
 smtpd_sasl_auth_enable = ใช่
 broken_sasl_auth_clients = ใช่
 # เพียง แต่ช่วยให้ผู้ใช้ส่งจดหมายที่อยู่ใน DB SASL เพียงให้รหัสผ่าน MD5
 smtp_sasl_security_options = noplaintext, noanonymous

 # โฮสต์ท้องถิ่นเท่านั้น (mynetworks) และผู้ใช้ที่ลงทะเบียนสามารถส่งอีเมลผ่านทาง SASL
 smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination, permit_sasl_authenticated
 smtpd_sasl_local_domain =

 # เฉพาะการตรวจสอบการเข้ารหัสด้วย TLS
 smtp_tls_auth_only = ใช่

 # TLS ที่
 smtp_use_tls = ใช่
 smtpd_use_tls = ใช่
 ใช่ smtp_tls_note_starttls_offer =

 # ที่สำคัญด้วยตนเองสร้างขึ้นและผ่านการรับรองจาก
 smtpd_tls_key_file = / etc / postfix / CERT / smtpd.key
 smtpd_tls_cert_file = / etc / postfix / CERT / smtpd.crt
 smtpd_tls_CAfile = / etc / postfix / CERT / cacert.pem

 ภายหลัง # 0, ที่ดีสำหรับการแก้จุดบกพร่อง
 1 smtpd_tls_loglevel =
 smtpd_tls_received_header = ใช่
 smtpd_tls_session_cache_timeout 3600 วินาที =
 tls_random_source = dev : / dev / urandom

 # ส่งจดหมายใน maildirs
 home_mailbox = / Maildir

 # ชื่อไฟล์ของนามแฝงเสมือนแผนที่มีการกำหนดของที่อยู่ e - mail ไปยังกล่องจดหมายในท้องถิ่น
 virtual_alias_maps = กัญชา : / etc / postfix / เสมือน

 จดหมาย # ไม่ได้อยู่ในกล่องจดหมายโดยตรง แต่ส่งผ่านไปยัง Procmail
 mailbox_command ="นามสกุล $"Procmail - 

SASL

SASL ให้ daemon สำหรับกลไกการตรวจสอบที่แตกต่างกัน การตั้งค่านี้สามารถเก็บไว้ในฐานข้อมูลที่ผู้ใช้ SASL ที่สามารถส่งอีเมลผ่านของเรา Postfix (ดังนั้นชื่อผู้ใช้และรหัสผ่านที่จะต้องป้อนในการเข้าถึงลูกค้า e - mail ไปยังเซิร์ฟเวอร์ SMTP)

การสร้างไฟล์ config สำหรับ SASL

  # / etc / postfix / smtpd.conf
 pwcheck_method : authdaemond
 mech_list : กวดวิชา - MD5 

postfix สามารถที่น่าเสียดายที่ยังไม่ได้ใช้ saslauthd เพื่อตรวจสอบข้อมูลของผู้ใช้เพราะ postfix เป็นที่ทำงานในสภาพแวดล้อม chroot และยังคงมีการเข้าถึง saslauthd

  # / etc / default / saslauthd
 start = ใช่
 DESC ="ภูต SASL รับรองความถูกต้อง"
 NAME ="saslauthd"
 กลไก ="PAM"
 MECH_OPTIONS =""
 หัวข้อ = 5

 # - M กับเราสถานที่ซ็อกเก็ต saslauthd ของไดเรกทอรีที่สามารถเข้าถึงได้จาก chroot Postfix
 OPTIONS ="- C - M / var / spool / postfix / var / รัน saslauthd /" 

หลังจากที่ยังคงต้องมีการเปลี่ยนแปลงใน"เริ่มต้นเช่น"บล็อกจาก / etc / init.d / saslauthd สถานที่สำหรับการ PID, อีกครั้งเพื่อให้ Postfix สามารถอ่านไฟล์ PID

  # / etc / init.d / saslauthd
 .
 .
 PIDFILE ="/ var / spool / postfix / var / run / $ {ชื่อ} / saslauthd.pid"
 .
 . 

TLS

ตอนนี้สามารถส่งช่องสัญญาณใด ๆ ที่ไม่ได้รับรองความถูกต้องมากขึ้นกว่าที่ mail Postfix SMTP แต่จดหมายยังคงอยู่ในข้อความธรรมดาผ่าน LAN และ Internet การเข้ารหัส TLS ถูกเปิดใช้งานในแฟ้มดังกล่าวข้างต้น Postfix - config main.cf แต่ที่สำคัญยังขาดหายไปและใบรับรอง

  mkdir / etc / postfix / ใบรับรอง
 cd / etc / postfix / ใบรับรอง

 OpenSSL genrsa - des3 - rand / etc / hosts ออก. / smtpd.key 1024
 chmod 600. / smtpd.key
 OpenSSL req ใหม่ที่สำคัญ. / smtpd.key ออก. / smtpd.csr
 OpenSSL x509 - req - 99999 วันที่ใน. / - smtpd.csr signkey. / smtpd.key ออก. / smtpd.crt
 OpenSSL RSA ใน. / smtpd.key ออก. / smtpd.key.tmp
 MV - F. / smtpd.key.tmp. / smtpd.key
 chmod 600. / smtpd.key
 OpenSSL req ใหม่ - X509 - นามสกุล v3_ca - keyout. / cakey.pem ออก. / cacert.pem - 99 วันที่ 999 

สร้างฐานข้อมูล SASL

อีเมลอยู่ในขณะนี้การเข้ารหัสระหว่างการส่งชื่อผู้ใช้และรหัสผ่านสำหรับการส่งจดหมายผ่านเซิร์ฟเวอร์ SMTP แต่ก็ยังไปผ่านทางอินเทอร์เน็ตในข้อความธรรมดา นี้จะสามารถปกปิดอย่างน้อยกับวิธีการอัด - MD5 นี้อยู่ใน / etc / postfix / smtpd.conf เปิดใช้งาน เพียง แต่มันขาดฐานข้อมูลที่ตัวเองสร้าง SASL หนึ่งนี้โดยเพียงแค่ช่วยให้ผู้ใช้อีเมลในภายหลังชื่อผู้ใช้และรหัสผ่าน

  # สำหรับ mail ของผู้ใช้ท้องถิ่นชื่อผู้ใช้ที่ใช้ในการสร้างฐานข้อมูล SASL กับผู้ใช้เป็นครั้งแรก
 ชื่อผู้ใช้ saslpasswd2 

postfix เป็นที่เสร็จสิ้น เขาสามารถรับและส่งอีเมล การเชื่อมต่อให้กับลูกค้าอีเมลอื่น ๆ และเซิร์ฟเวอร์จะถูกเข้ารหัส

Courier

เดินเอกสารไฟล์ config

  # / etc / ไปรษณีย์ / authdaemonrc

 # UserDB ใช้การตรวจสอบ
 authmodulelist ="authuserdb"

 authmodulelistorig ="authuserdb AuthPAM authpgsql authldap authmysql authcustom authpipe"
 daemons = 5
 authdaemonvar = / var / run / ไปรษณีย์ / authdaemon

 # ที่ดีสำหรับการแก้จุดบกพร่อง
 DEBUG_LOGIN = 2
 ตัวเลือกเริ่มต้น =""
 LOGGEROPTS ="" 
  # / etc จัดส่ง / / authmodulelist

 Courierauthdaemon # ใช้ MD5 อัด
 authcram 
 # / etc จัดส่ง / / ที่อยู่ imapd = 0 PORT = 143 MAXDAEMONS maxperip = 40 = 20 PIDFILE TCPDOPTS = / var / run / ไปรษณีย์ / imapd.pid ="nodnslookup noidentlookup"LOGGEROPTS ="ชื่อ = imapd"# ที่นี่ AUTH = กวดวิชา - MD5 IMAP_CAPABILITY เพิ่ม ="IMAP4rev1 กระทู้ UIDPLUS namespace เด็ก = ORDEREDSUBJECT = เรียงลำดับกระทู้ QUOTA อ้างอิง AUTH = กวดวิชา - MD5 IDLE"IMAP_KEYWORDS = 1 IMAP_ACL = 1 IMAP_CAPABILITY_ORIG ="IMAP4rev1 กระทู้ UIDPLUS namespace เด็ก = ORDEREDSUBJECT กระทู้อ้างอิง = เรียงลำดับ AUTH QUOTA = MD5 กวดวิชา - AUTH = กวดวิชา - SHA1 AUTH = กวดวิชา - SHA256 IDLE"IMAP_PROXY IMAP_PROXY_FOREIGN = 0 = 0 = 60 IMAP_MAILBOX_SANITY_CHECK IMAP_IDLE_TIMEOUT = 1 IMAP_CAPABILITY_TLS ="$ AUTH = IMAP_CAPABILITY"IMAP_CAPABILITY_TLS_ORIG ="ธรรมดา $ AUTH = PLAIN IMAP_CAPABILITY_ORIG"IMAP_DISABLETHREADSORT = 0 IMAP_CHECK_ALL_FOLDERS = 0 = 0 IMAP_OBSOLETE_CLIENT IMAP_UMASK = 022 = 65536 IMAP_ULIMITD IMAP_USELOCKS = 1 IMAP_SHAREDINDEXFILE = / etc / ไปรษณีย์ / ใช้ร่วมกัน / ดัชนี IMAP_ENHANCEDIDLE = 0 IMAP_TRASHFOLDERNAME = ถังขยะถังขยะ IMAP_EMPTYTRASH = : 7 HEADER IMAP_MOVE_EXPUNGE_TO_TRASH Sendmail = 0 = / usr / sbin / sendmail จาก = X IMAP ผู้ส่ง IMAPDSTART = YES MAILDIRPATH = Maildir 
  993 SSLPort =
 externe.ip.des.servers SSLADDRESS =
 SSLPIDFILE = / var / run / ไปรษณีย์ / imapd - ssl.pid
 SSLLOGGEROPTS ="ชื่อ = imapd - SSL"
 IMAPDSSLSTART = YES
 IMAPDSTARTTLS = YES
 IMAP_TLS_REQUIRED = 1
 Couriertls = / usr / bin / couriertls
 TLS_KX_LIST = ทั้งหมด
 TLS_C​​OMPRESSION = ทั้งหมด
 TLS_C​​ERTS = X509
 TLS_C​​ERTFILE = / etc / ไปรษณีย์ / imapd.pem
 TLS_TRUSTCERTS = / etc / ssl / certs
 ไม่มี TLS_VERIFYPEER =
 TLS_C​​ACHEFILE = / var / lib / ไปรษณีย์ / couriersslcache
 TLS_C​​ACHESIZE = 524288
 Maildir MAILDIRPATH =

 # อีกครั้งหนึ่งที่มาถึงการกวดวิชา - MD5 AUTH =

 IMAP_CAPABILITY ="IMAP4rev1 กระทู้ namespace เด็ก = กระทู้ UIDPLUS เรียงลำดับข้อมูลอ้างอิง = QUOTA ORDEREDSUBJECT AUTH = กวดวิชา - MD5 IDLE" 

ฆาตกรสแปม

ฆาตกรสแปมถูกเปิดใช้งาน

  # / etc / default / SpamAssassin
 enabled = 1
 OPTIONS ="-- สร้าง - การตั้งค่า -- max - เด็ก 5 -- ผู้ช่วยที่บ้าน - dir"
 PIDFILE ="/ var / run / spamd.pid"
 cron = 0 

Procmail

หลังจาก Postfix ได้รับจดหมายจากอินเทอร์เน็ตสำหรับผู้ใช้ในท้องถิ่นนั้นจะผ่านมันไป Procmail Procmail แล้วผ่านอีเมลเพื่อ SpamAssassin ตรวจสอบพวกเขาสแปมและ clamassassin ที่ส่งต่อไปยังโปรแกรมสแกนไวรัส ClamAV

  # Procmailrc ตัวอย่าง. สำหรับไดเรกทอรีบ้านของผู้ใช้อีเมล

 PATH = $ HOME / bin : / usr / bin : / bin : / usr / local / bin :
 maildir = $ HOME / Maildir /
 default = $ HOME / Maildir / ใหม่
 LogFile = $ HOME / procmail.log

 ฆาตกร SPAM #
 : 0fw : / var / run / spam.lock
 * * * * <256 000
 | Spamc - F - U $ LOGNAME

 # ทั้งหมด SPAM 10-99 คะแนนมีเส้นทางเดียวกัน
 : 0 :
 * ^ X - Spam - สถานะ : ใช่คะแนน = [1-9] [0-9] \
 / dev / null

 SPAM # ทั้งหมดที่มีคะแนน> 3 จะหายไป
 # : 0 :
 # * ^ X - Spam - สถานะ : ใช่คะแนน = \ [4-9]
 # / dev / null

 : 0fw
 | / usr / bin / clamassassin

 # Rewrite บรรทัดเรื่องถ้าระดับสแปมสูงพอ
 : 0fw
 * ^ X - Spam - สถานะ : ใช่
 Sed '1 ,/^$/ s @ เรื่อง ^ | : เรื่อง @ : ไวรัส / / @!

 : 0 :
 * ^ X - Spam - สถานะ : ใช่
 / dev / null

 # ย้ายอีเมลสแปมสแปม SA
 : 0 :
 * ^ X - Spam - สถานะ : ใช่
 $ Maildir /. สแปม / ใหม่

 # อีเมลทั้งหมดที่มีทำให้มันนี้ไกลโดยไม่ต้องสิ้นการบาดเจ็บขึ้นมาโดยอัตโนมัติในกล่องจดหมายของผู้ใช้  "มีไปรษณีย์ส่งถึงคุณ!" 

! ผิว ระบบอีเมลเสร็จเรียบร้อยแล้ว! มันขาดเพียง maildirs ผู้ใช้และการกำหนดค่าของนามแฝงเสมือนเพื่อตรวจสอบว่าที่อยู่อีเมลที่โหลดลงในกล่องจดหมายของท้องถิ่นซึ่ง สคริปต์ต่อไปนี้จะสร้างผู้ใช้ระบบ UNIX และผู้ใช้เดียวกันอีกครั้งสำหรับ Postfix และจัดส่ง sasldb ใน Courier - Userdb

สคริปต์เพื่อสร้างผู้ใช้ใหม่

  # เพิ่มผู้ใช้ใหม่เพื่อให้ระบบอีเมล                      

 # / bin / bash
 ชัดเจน
 echo"ผู้ใช้ใหม่สำหรับระบบอีเมล";
 echo"ใส่ชื่อผู้ใช้ :";
 อ่าน newuser                          

 echo $ newuser> ราก> / / สคริปต์ mail / / mail_users.dat

 # การเพิ่มผู้ใช้ Unix

 adduser -- ผู้ใช้ ingroup -- เงียบ -- เปลือก / bin / เท็จ $ newuser

 เสียงก้อง
 echo"ลินุกซ์ถูกสร้างขึ้น ....."
 เสียงก้อง

 # การเพิ่มกล่องจดหมาย Courier

 maildirmake / home / $ newuser / Maildir
 F maildirmake สแปม / home / $ newuser / Maildir
 maildirmake ไวรัส F / home / $ newuser / Maildir
 maildirmake Lern​​eSpam F / home / $ newuser / Maildir
 maildirmake Lern​​eKeinSpam F / home / $ newuser / Maildir
 maildirmake F / โฟลเดอร์บ้านของฉัน / $ newuser / Maildir
 maildirmake ส่ง F / home / $ newuser / Maildir
 ถังขยะ maildirmake - F / home / $ newuser / Maildir
 chown - R newuser.users $ / home / $ newuser / Maildir
 เสียงก้อง
 echo"IMAP ไดเรกทอรีอีเมลที่ถูกสร้างขึ้น ...."
 เสียงก้อง

 # การตั้งค่า SASL สำหรับ Postfix SMTP auth รหัสผ่าน

 เสียงก้อง
 เสียงก้อง
 echo"รหัสผ่านสำหรับ SMTP - AUTH (แสดงอีเมลกับลูกค้า)"
 saslpasswd2 $ newuser

 เสียงก้อง
 เสียงก้อง
 echo"ระบุรหัสผ่านสำหรับการท่องเที่ยว (Zuganspasswort สำหรับ imapserver)"

 NEWUID =`แมว / etc / passwd | grep $ newuser | ตัด - D : - F3`

 $ userdb ตั้ง newuser บ้าน = / home / $ newuser = $ uid = 100 NEWUID gid
 userdbpw - hmac - md5 | userdb ตั้ง newuser $ IMAP - hmac - md5pw บ้าน = / home / $ newuser
 makeuserdb

 / etc / init.d / ไปรษณีย์ - authdaemon รีสตาร์ท
 / รีสตาร์ท etc / init.d / saslauthd

 echo"ตกลงการใช้งาน. สร้าง"
 echo"กําหนดที่ผู้ใช้ใหม่โปรดที่อยู่อีเมลยังคง!"
 เสียงก้อง
 เสียงก้อง
 echo"แก้ไข / etc / postfix / เสมือน."
 echo"จากนั้นเรียกใช้ครั้งเดียว : postmap / etc / postfix / เสมือน"
 echo"เรียกใช้จากนั้นเมื่อ : / โหลด etc / init.d / postfix"

สคริปต์สำหรับการลบผู้ใช้

  echo"ลบผู้ใช้นี้"
 อ่าน Deluser

 # ของ mail_users_dat lernespam ได้รับจดหมายของผู้ใช้
 แมวราก / / สคริปต์ mail / / mail_users.dat | grep - v"^ $ Deluser $"> / root / สคริปต์ mail / / mail_users.dat.tmp
 ราก RM / / สคริปต์ mail / / mail_users.dat
 MV / root / สคริปต์ mail / / mail_users.dat.tmp / root / สคริปต์ mail / / mail_users.dat

 deluser -- ลบบ้าน $ Deluser
 saslpasswd2 - D $ Deluser
 $ userdb เด Deluser
 makeuserdb
 / etc / init.d / ไปรษณีย์ - authdaemon รีสตาร์ท
 / รีสตาร์ท etc / init.d / saslauthd

สคริปต์เพื่อให้ตนเองได้เรียนรู้สแปม

  # / bin / bash

 สำหรับผู้ใช้ใน $ (แมว / root / scripts / อีเมล mail_users.dat /);
 ทำ

 Sadir ผู้ใช้ = / home / $. SpamAssassin /
 NOSPAM = / home / ผู้ใช้ $ / Maildir /. Lern​​eKeinSpam / ป /

 สำหรับ l ใน $ (ls $ NOSPAM);
 ทำ
 พิมพ์ =`$ cat NOSPAM / $ l | grep - E"^ จาก :"| grep - O"[[:. alnum :] \ \ + \ --​​ \ _]*@[[: alnum :] \ \ -. ] *"| เรียง U -`
 echo"whitelist_from พิมพ์ $">> $ Sadir / user_prefs
 ทำ

 # SA ให้เรียนรู้
 / usr / bin / SA - เรียนรู้ -- D สแปม / home / ผู้ใช้ $ / Maildir / Lern​​eSpam / cur.
 / usr / bin / SA - เรียนรู้ -- D แฮม / home / $ ผู้ใช้ / Maildir / Lern​​eKeinSpam / cur.

 # ย้ายสิ่ง
 MV / home / ผู้ใช้ $ / Maildir /. Lern​​eKeinSpam cur / / * * * * / home / ผู้ใช้ $ / Maildir / ป /
 LerneSpam RM / home / $ ผู้ใช้ / Maildir /. / ป / * * * *

 ทำ
 ทางออก

เสมือนจริงแทน

Postfix ของเราไม่ได้รู้ว่าสิ่งที่อยู่ e - mail ที่ถูกกำหนดไปยังกล่องจดหมายในท้องถิ่น งานนี้จะอยู่ในไฟล์ / etc / postfix / เสมือนที่สร้างขึ้น ลิงค์ที่อยู่อีเมลของผู้ส่งหรือ"ราก"ท้องถิ่นเป็นที่ถูกต้องเป็นชื่อผู้ใช้สำหรับกล่องจดหมายของ IMAP หรือปลายทางที่อยู่ e - mail สำหรับการส่งต่อ

  # / etc / postfix / เสมือน
 Daniel ราก
 Daniel daniel@meinedomain.de
 Daniel daniel@meineanderedomain.de
 Fritz fritz@meinedomain.de
 Fritz alle@meinedomain.de แดเนียล
 daniel@gmail.com weiterleitung@meinedomain.de 

จากนั้นต้องเริ่มต้นนามแฝง Postfix เสมือนอีกครั้ง นี้เป็นสิ่งจำเป็นหลังจากมีการเปลี่ยนแปลงไปยังแฟ้มแต่ละ

  postmap / etc / postfix / virtual 

ตอนนี้ทุกอย่างพร้อม จะต้องมีการบริการทั้งหมดจะเริ่มต้น

  / etc / init.d / postfix เริ่มต้นใหม่
 / etc / init.d / ไปรษณีย์ - IMAP เริ่มต้นใหม่
 / รีสตาร์ท etc / init.d / ไปรษณีย์ - IMAP - SSL
 / etc / init.d / ไปรษณีย์ - authdaemon รีสตาร์ท
 / รีสตาร์ท etc / init.d / saslauthd
 / etc / init.d / SpamAssassin
 / etc / init.d / ClamAV 

บางสิ่งบางอย่างจะไม่แน่นอนทำงาน! การแก้ปัญหาเป็น / var / log / mail.log ค่อนข้างดี ในไฟล์ config จำนวนมากฉันก็สามารถตั้งค่าระดับการเข้าสู่ระบบเพื่อรับทราบข้อมูลเพิ่มเติม

หน้าขนส่ง

เพื่อ weiterzurouten อีเมลไปยัง SMTP อื่นคุณต้องแผนที่การขนส่ง คุณกำลังอยู่ในไฟล์ / etc / postfix / การขนส่งที่สร้าง :

 # / etc / postfix / การขนส่ง
 # ปลายทาง Link ท้องถิ่น
 # SMTP จะถูกส่งต่อไปทางขวา

 Daniel - ritter.de SMTP : 12.13.14.15
 Daniel - ritter.de SMTP : anderer.host.de

 # นอกจากนี้ทุกโดเมนย่อย
 . Ritter.de Daniel - SMTP : anderer.host.de

 # / etc / postfix / main.cf
 transport_maps = กัญชา : / etc / postfix / การขนส่ง

 # ตรวจสอบการเปลี่ยนแปลงในแผนที่การขนส่ง

 postmap / etc / postfix / การขนส่ง
 / โหลด etc / init.d / postfix

ผู้ใช้สามารถเปลี่ยนรหัสผ่านที่จัดแม้กระทั่ง

 echo"เปลี่ยนรหัสผ่าน Times"
 เสียงก้อง

 เสียงก้อง
 echo"ชื่อ :"
 อ่าน U
 echo"รหัสผ่านเก่า"
 อ่าน
 echo"รหัสผ่านใหม่"
 ยังไม่มีข้อความที่อ่าน

 หาก [$ (echo $ F | grep - e ^ [0-9])];
 แล้ว
 echo"ขออภัย. รหัสผ่านที่ไม่ต้องเริ่มต้นด้วยตัวเลข."
 ทางออก
 Fi

 echo - E"U $ \ 0 $ A \ 0 $ N \ 0"| / usr / courierpasswd -- stdin -- -- verbose -- stderr changepw

เพลิดเพลินไปกับบทความนี้?

พิจารณาการสมัครรับฟีด RSS ของเรา!

ความคิดเห็นที่ (20) Trackbacks (1)
  1. เว้นแต่เป็นกรณีที่ funzt ในขณะนี้ แต่หลังจากที่ Googelei มากฉันได้พบว่า postfix ไม่สามารถยัดเยียด - md5 authdaemond กับ saslauthd โดยอัตโนมัติและจะใช้เวลา คุณไม่ทำที่จะทำงานเช่นนี้ได้อย่างไร? :)

  2. habs ตกลงใน / usr / sbin / ผลักดัน courierpasswd

    ตอนนี้ปัญหาที่เกิดขึ้นต่อไปนี้ :

    authdaemond : ไม่มีค่า imappw หรือ systempw ใน userdbshadow

    : S รหัสผ่านจะหายไป ...

  3. Moin,

    เมื่อฉันหายไปที่ไฟล์ / opt / courierpasswd

    คุณสามารถทำอะไร?

  4. ... ดังนั้น howto ที่อยู่ในคำสั่ง!

    แต่หนึ่งคำถามที่ฉันได้ : ฉันมีเซิร์ฟเวอร์ Debian ของฉัน (มี IP ของตัวเอง) ในขอบเขตที่มันยังได้จัดตั้งและจัดการกับที่เขายอมรับจดหมายจากภายนอกและกำหนดผู้ใช้ที่เกี่ยวข้อง แต่ฉันได้รับผ่านทางธันเดอร์เบิร์ดไม่สามารถเชื่อมต่อไปยังเซิร์ฟเวอร์ในการส่งข้อความบนเซิร์ฟเวอร์ของฉันที่จะส่งไปดูรายละเอียด

    คนที่สามารถช่วยฉันได้อย่างไร

    ขอบคุณ
    สแตนเลย์

  5. อาหารที่ฉันจะต้อง
    eigendlich แก้ไขเริ่มต้นเช่น - ต้องการความช่วยเหลือของคุณอีกครั้ง

    เข้าสู่ระบบเป็น : ww1com
    ww1com@192.168.0.30 รหัสผ่าน's :
    ลินุกซ์ 2.6.26-2-486 # 1 เสาร์ debian.ww1net.de 11 มิถุนายน 2011 14:47:34 UTC i686

    โปรแกรมที่มาพร้อมกับระบบ Debian GNU / Linux เป็นซอฟต์แวร์ที่ฟรี;
    เงื่อนไขการจัดจำหน่ายที่แน่นอนสำหรับแต่ละโปรแกรมจะอธิบายไว้ใน
    ไฟล์แต่ละไฟล์ใน / usr / share / doc / * / ลิขสิทธิ์

    Debian GNU / Linux มาพร้อมกับอย่างแน่นอนไม่มีการรับประกันในขอบเขตที่
    ได้รับอนุญาตตามกฎหมายที่ใช้บังคับ
    เข้าสู่ระบบครั้งสุดท้าย : จันทร์ 25 กรกฎาคม 2011 10:57:09 จาก ww1com.fritz.box
    suww1com @ Debian : ~ $ Su
    รหัสผ่าน :
    Debian : / home/ww1com # nano / etc / init.d / saslauthd
    Debian : / home/ww1com # nano / etc / init.d / saslauthd
    Debian : / home/ww1com # nano / etc / init.d / saslauthd

    #! / bin / sh
    do_stopall
    ;
    โหลด | บังคับโหลด)
    do_reloadall
    ;
    รีสตาร์ท)
    StartupScript do_stopalluthd
    do_startall
    ;
    เริ่มต้นอินสแตนซ์)
    หาก [- F / etc / default / $ 2] แล้ว
    ผู้เขียน # : Fabian Fagerhostart_instance / etc / default / $ 2
    อื่น
    # ไม่"ตั้งค่า E -"log_failure_msg"อินสแตนซ์ 2 $ ไม่อยู่."
    Fi
    # เส้นทางควรอย่างใดอย่างหนึ่ง; รวม / usr / * ถ้ามันทำงานหลังจากที่สคริปต์ mountnfs.sh
    หยุดอินสแตนซ์)
    หาก [- F / etc / default / $ 2] แล้ว
    ค้นหา : stop_instance / etc / default / $ 2

    ^ C ยกเลิก ^ R ^ O ไฟล์บันทึก ¶ Y ^ ffn หน้าตัดเต็มรูปแบบก่อนหน้านี้ ^ ^ K เคอร์เซอร์ C
    ออกจาก iX ^ J ^ w อยู่ที่ไหนหน้าการจัดตำแหน่ง ^ ^ V ก่อนที่ U Ausschn r ^ T Rechtschr

    # / etc / init.d / saslauthd
    .
    .
    PIDFILE ="/ var / spool / postfix / var / run / $ {ชื่อ} / saslauthd.pid"
    .
    .

  6. @ Sunny : มันไม่สำคัญว่า คุณสามารถวางสคริปต์ที่คุณต้องการ ตัวอย่างเช่นในราก / / สคริป แต่ยังที่อื่น ๆ

  7. สวัสดี ahb ขอเวลาอีกไม่กี่

    ครั้งแรก ผมทำตามสิ่งที่ชื่อไฟล์จะต้องลบจากผู้ใช้ระบุสคริปต์
    ที่สอง ผมทำตามสิ่งที่ชื่อไฟล์ได้ด้วยตนเองได้รับสคริปต์สแปม
    ที่สาม ผมทำตามสิ่งที่ชื่อไฟล์ที่จำเป็นต้องสคริปต์เพื่อสร้างผู้ใช้ใหม่

    ขอบคุณสำหรับความช่วยเหลือ

  8. @ Sunny : มันไม่สำคัญว่าคุณสามารถวางสคริปต์ที่คุณต้องการ ตัวอย่างเช่นในราก / / สคริปต์

  9. เดนนิสสวัสดี
    คุณสามารถบอกฉันที่ฉันสร้างไฟล์ที่สร้างและลบเก็บผู้ใช้ใหม่ต้องการของผู้ใช้ ฯลฯ ?

  10. oute อาจจะเพียงแค่ฉันเป็น noob แต่มันสามารถช่วยฉัน
    ฉันมักจะมีในรับรองความถูกต้องของรายการนี​​้

    saslpasswd2 : ข้อผิดพลาดรายการลบจาก sasldb : DB_NOTFOUND : ไม่มีคู่คีย์ / พบข้อมูลที่ตรงกัน

  11. ได้ทำ ... เป็นเพียงชื่อที่มีการบันทึกใด ๆ (ไม่รวมนามสกุลของไฟล์) แล้วกับฉาบ. Run / ชื่อไฟล์

  12. , Moin

    คิดว่ามันทำดีจริงๆ .. แต่ฉันได้ชนิดของปัญหา .. n ผมทำงานทุกอย่างตามที่ห่างไกล แต่ฉันจะทำอย่างไรกับสคริปต์เพื่อเพิ่มผู้ใช้ใหม่ได้หรือไม่ .. ฉันจะเรียกมันได้อย่างไร ฉันหรือสร้างก่อนที่จะ sasldb หรือไม่? ขอบคุณมากสำหรับการตอบกลับ

  13. ชี้แจง :-)

  14. สวัสดีทุก

    ผมพบว่าการกวดวิชานี้ได้เป็นอย่างดี! ฉัน mail_users.dat แต่เป็นเดนนิสยังคงเป็นคำถามเกี่ยวกับการเปิด / root / สคริปต์ mail / / เมื่อมีการสร้างผู้ใช้ ไฟล์นี้ไม่ได้อยู่ ถ้าเป็นแฟ้มว่างเปล่าที่ฉันวางบน mail_users.dat เพียงสัมผัส / root / สคริปต์ mail / /?

    ขอขอบคุณและขอแสดงความนับถือที่ดีที่สุด

  15. หนึ่งคันธนู ... ! THX ;)

  16. Moin,

    การทำดี :-) เพียงแค่มีปัญหาบางอย่าง ...

    ครั้งแรก Courier

    ในวรรคหนึ่งต้องเป็นเพราะของสิ่งที่ MD5 ใน / etc จัดส่ง / / แทรก imapd ตัวอย่างของคุณภายใต้วรรคหนึ่งเป็นสถานที่ที่นี้จะไป?

    เมื่อมีการสร้างผู้ใช้พบแฟ้ม : mail_users.dat ไม่ได้! เหตุผลที่ควรจะมี?

    และสิ่งหนึ่งที่มากขึ้นหากฉันส่ง e - mail มาที่ฉันได้รับข้อความนี้ :
    ----------
    นี่คือการจัดส่งการแจ้งเตือนสถานะสร้างขึ้นโดยอัตโนมัติ

    จัดส่งไปยังผู้รับดังต่อไปนี้ล้มเหลว
    ---------

    ใน mail.log says :
    ------------

    2 ธันวาคม 00:13:40 HOSTNAME ล้าง postfix / [10 984] : RCPT จาก bay0 - omc2 - s11.bay0.hotmail.com [65.54.190.86] : : NOQUEUE : ปฏิเสธ 554 5.7.1 : การเข้าถึงปฏิเสธ Relay; จากไป = = = Proto HELO ESMTP =
    ------------

    ฉันหวังว่าคุณสามารถให้คำแนะนำหรือความช่วยเหลือหรือไม่

    MFG
    เดนนิส

  17. ถ้าคุณได้รับข้อผิดพลาดต่อไปนี้คุณจะต้อง ="[...]" ใน / etc / init.d / postfix ภายใต้แฟ้มที่จะเพิ่ม etc/sasldb2 ที่จะเริ่มต้นไฟล์จะถูกคัดลอกลงใน chroot แต่ละของ postfix

    ล้าง postfix / [20 251] : คำเตือน : ปัญหาการตรวจสอบ SASL : ไม่สามารถเปิด Berkeley DB / etc/sasldb2 : ไม่มีไฟล์หรือไดเรกทอรีนั้น

  18. @ Flo Flo Hey ลองใน / etc จัดส่ง / / authdaemonrc"DEBUG_LOGIN"กำหนดสูง แล้วคุณจะเห็นใน / var / log auth.log / หรือ / var / log / mail.log เพื่อสิ่งที่ผิดไป

  19. ขอบคุณเป็นครั้งแรกสำหรับการกวดวิชาของคุณ ถ้าทุกอย่างทำงานยกเว้นสำหรับการลงชื่อเข้าใช้ด้วย Thunderbird 3 ชื่อผู้ใช้ของฉัน (ohne@domain.de) ฉันได้ป้อน ขอบคุณสำหรับเคล็ดลับใด ๆ

  20. บทความดีมาก, คือการช่วยเหลือที่ดี! ขอบคุณ


ใส่ความเห็น

กรุณาคัดลอก FPz5Yq สตริงเพื่อฟิลด์ด้านล่าง :