exim4:install_exim4_complete
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
exim4:install_exim4_complete [2016/11/08 12:19] – peter | exim4:install_exim4_complete [2020/07/25 16:30] (current) – old revision restored (2016/11/08 11:39) 92.220.10.100 | ||
---|---|---|---|
Line 45: | Line 45: | ||
pw useradd exim -c " | pw useradd exim -c " | ||
exit | exit | ||
- | cat /etc/passwd | grep exim | + | cat /etc/passwd | grep exim -d / |
+ | exit | ||
+ | cat /etc/passwd | pw useradd exim -c " | ||
+ | exit | ||
+ | cat /etc/passwd | grep exim | ||
+ | pw useradd exim -c " | ||
+ | exit | ||
+ | cat /etc/passwd | grep exim exim: | ||
</ | </ | ||
Line 63: | Line 70: | ||
<code bash> | <code bash> | ||
- | ee Local/ | + | $ ee Local/ |
</ | </ | ||
Line 112: | Line 119: | ||
To find the path to library files and MySQL headers, execute: | To find the path to library files and MySQL headers, execute: | ||
- | <code bash> | ||
- | / | ||
- | </ | ||
- | |||
- | Result | ||
- | |||
- | < | ||
- | Usage: / | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | |||
- | These values are substituted into the lines below ... | ||
- | |||
- | <file bash> | ||
- | # LOOKUP_INCLUDE = -I / | ||
- | # LOOKUP_LIBS = -L / | ||
- | |||
- | on | ||
- | |||
- | LOOKUP_INCLUDE = -I / | ||
- | LOOKUP_LIBS = -L / | ||
- | |||
- | EXIM_MONITOR = eximon.bin | ||
- | on | ||
- | |||
- | # EXIM_MONITOR = eximon.bin | ||
- | Here, we turn off support for Exim Monitor. | ||
- | |||
- | For Exim Monitor requires X11, contact is not used. | ||
- | |||
- | # WITH_CONTENT_SCAN = yes | ||
- | on | ||
- | |||
- | WITH_CONTENT_SCAN = yes | ||
- | |||
- | # WITH_OLD_DEMIME = yes | ||
- | on | ||
- | |||
- | WITH_OLD_DEMIME = yes | ||
- | Here we include an option that will help Exim work with ClamAV and Spamassassin. | ||
- | |||
- | # AUTH_CRAM_MD5 = yes | ||
- | # AUTH_PLAINTEXT = yes | ||
- | on | ||
- | |||
- | AUTH_CRAM_MD5 = yes | ||
- | AUTH_PLAINTEXT = yes | ||
- | Here we include of SMTP-authentication support for PLAIN and CRAM-MD5. | ||
- | |||
- | # SUPPORT_TLS = yes | ||
- | on | ||
- | |||
- | SUPPORT_TLS = yes | ||
- | Here we include TLS / SSL support for secure connection. | ||
- | |||
- | # TLS_LIBS = -lssl -lcrypto | ||
- | on | ||
- | |||
- | TLS_LIBS = -lssl -lcrypto | ||
- | Here we specify the names of libraries for TLS / SSL. | ||
- | |||
- | # LOG_FILE_PATH = / | ||
- | on | ||
- | |||
- | LOG_FILE_PATH = / | ||
- | Putting log files to a separate directory. | ||
- | |||
- | EXICYCLOG_MAX = 10 | ||
- | on | ||
- | |||
- | EXICYCLOG_MAX = 20 | ||
- | Number of saved log files do I increase to 20 in the event debriefing with his superiors: " | ||
- | |||
- | # EXIM_PERL = perl.o | ||
- | on | ||
- | |||
- | EXIM_PERL = perl.o | ||
- | Here we include support perl, to ensure the use of Perl-compatible regular expressions, | ||
- | |||
- | # CHOWN_COMMAND = / | ||
- | on | ||
- | |||
- | CHOWN_COMMAND = / | ||
- | Here we specify the correct path to the chown command. | ||
- | |||
- | # SUPPORT_MOVE_FROZEN_MESSAGES = yes | ||
- | on | ||
- | |||
- | SUPPORT_MOVE_FROZEN_MESSAGES = yes | ||
- | Here we include support for the automatic movement " | ||
- | </ | ||
- | |||
- | |||
- | Save the changes. | ||
- | |||
- | <code bash> | ||
- | make | ||
- | su | ||
- | make install | ||
- | </ | ||
- | |||
- | After the installation is complete, you need to create a symbolic link, this will do the following: | ||
- | |||
- | <code bash> | ||
- | ln -fs / | ||
- | ln -fs / | ||
- | ln -fs / | ||
- | ln -fs / | ||
- | </ | ||
- | |||
- | After that you want to remove from the object files Exim table name and line number information for this issue: | ||
- | |||
- | <code bash> | ||
- | strip / | ||
- | exit | ||
- | </ | ||
- | |||
- | Before configuring Exim, you need to create a database, the user and the appropriate table for this issue: | ||
- | |||
- | <code bash> | ||
- | / | ||
- | </ | ||
- | |||
- | Result | ||
- | |||
- | < | ||
- | Welcome to the MySQL monitor. | ||
- | Your MySQL connection id is 3760 to server version: 4.1.10a-log | ||
- | |||
- | Type ' | ||
- | |||
- | mysql> | ||
- | </ | ||
- | |||
- | Create the database. | ||
- | |||
- | <code mysql> | ||
- | mysql> CREATE DATABASE exim; | ||
- | mysql> GRANT ALL PRIVILEGES ON exim.* TO sqlmail@localhost | ||
- | -> IDENTIFIED BY ' | ||
- | mysql> quit | ||
- | </ | ||
- | |||
- | When the database and user created, you need to create the table structure, and enter data about users. | ||
- | |||
- | <code bash> | ||
- | ee exim.sql | ||
- | </ | ||
- | |||
- | <file bash exim.sql> | ||
- | # Create the aliases table. | ||
- | CREATE TABLE aliases ( | ||
- | local_part varchar(64) NOT NULL default '', | ||
- | domain varchar(128) NOT NULL default ' | ||
- | recipients text, | ||
- | PRIMARY KEY (local_part, | ||
- | ); | ||
- | |||
- | # Populate the aliases table. | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | INSERT INTO aliases VALUES (' | ||
- | |||
- | # Create the domains table. | ||
- | CREATE TABLE domains ( | ||
- | domain varchar(128) NOT NULL default '', | ||
- | type enum(' | ||
- | PRIMARY KEY (domain) | ||
- | ); | ||
- | |||
- | # Populate the domains table. | ||
- | INSERT INTO domains VALUES (' | ||
- | |||
- | # Create the userforward table. | ||
- | CREATE TABLE userforward ( | ||
- | local_part varchar(64) NOT NULL default '', | ||
- | domain varchar(128) NOT NULL default '', | ||
- | recipients text, | ||
- | PRIMARY KEY (local_part, | ||
- | ); | ||
- | |||
- | # Create the users table. | ||
- | CREATE TABLE users ( | ||
- | login varchar(64) NOT NULL default '', | ||
- | name varchar(128) NOT NULL default '', | ||
- | password varchar(64) NOT NULL default '', | ||
- | decrypt varchar(64) NOT NULL default '', | ||
- | uid int(10) unsigned default ' | ||
- | gid int(10) unsigned default ' | ||
- | domain varchar(128) NOT NULL default ' | ||
- | quota tinyint(4) default ' | ||
- | status enum(' | ||
- | PRIMARY KEY (login, | ||
- | ); | ||
- | </ | ||
- | |||
- | Create the tables, data, and the first user. | ||
- | |||
- | <code mysql> | ||
- | / | ||
- | mysql> \. exim.sql | ||
- | mysql> INSERT INTO users (login, | ||
- | -> VALUES (' | ||
- | mysql> quit | ||
- | </ | ||
- | |||
- | It's time now to configure Exim. Go to the directory where configuration file and do the following: | ||
- | |||
- | <code bash> | ||
- | cd / | ||
- | su | ||
- | mv configure configure.default | ||
- | </ | ||
- | |||
- | Edit the configuration file. | ||
- | |||
- | <code bash> | ||
- | ee configure | ||
- | </ | ||
- | |||
- | and populate as: | ||
- | |||
- | <file exim configure> | ||
- | ###################################################################### | ||
- | # Runtime configuration file for Exim # | ||
- | ###################################################################### | ||
- | ####################################################################### | ||
- | # MAIN CONFIGURATION SETTINGS | ||
- | ###################################################################### | ||
- | |||
- | primary_hostname = sharewiz.net | ||
- | domainlist local_domains = ${lookup mysql{SELECT domain FROM domains \ | ||
- | WHERE domain=' | ||
- | (type=' | ||
- | domainlist relay_to_domains = ${lookup mysql{SELECT domain FROM domains \ | ||
- | WHERE domain=' | ||
- | hostlist | ||
- | auth_advertise_hosts = * | ||
- | daemon_smtp_ports = 25 : 465 | ||
- | tls_on_connect_ports = 465 | ||
- | tls_advertise_hosts = * | ||
- | tls_certificate = / | ||
- | tls_privatekey = / | ||
- | log_selector = \ | ||
- | +all_parents \ | ||
- | +lost_incoming_connection \ | ||
- | +received_sender \ | ||
- | +received_recipients \ | ||
- | +smtp_confirmation \ | ||
- | +smtp_syntax_error \ | ||
- | +smtp_protocol_error \ | ||
- | -queue_run | ||
- | acl_smtp_rcpt = acl_check_rcpt | ||
- | acl_smtp_mime = acl_check_mime | ||
- | qualify_domain = sharewiz.net | ||
- | allow_domain_literals = false | ||
- | never_users = root | ||
- | host_lookup = * | ||
- | rfc1413_hosts = * | ||
- | rfc1413_query_timeout = 0s | ||
- | ignore_bounce_errors_after = 30m | ||
- | timeout_frozen_after = 3d | ||
- | freeze_tell = postmaster | ||
- | message_size_limit = 10M | ||
- | smtp_accept_max = 100 | ||
- | smtp_accept_max_per_connection = 5 | ||
- | smtp_accept_max_per_host = 2 | ||
- | split_spool_directory = true | ||
- | remote_max_parallel = 15 | ||
- | smtp_banner = " | ||
- | This system does not accept Unsolicited \ | ||
- | Commercial Email\nand will blacklist \ | ||
- | offenders via our spam processor.\nHave a \ | ||
- | nice day!\n\n${primary_hostname} ESMTP" | ||
- | |||
- | hide mysql_servers = localhost/ | ||
- | |||
- | ###################################################################### | ||
- | # ACL CONFIGURATION | ||
- | # | ||
- | ###################################################################### | ||
- | begin acl | ||
- | |||
- | acl_check_rcpt: | ||
- | |||
- | accept | ||
- | |||
- | deny domains | ||
- | local_parts | ||
- | |||
- | deny domains | ||
- | local_parts | ||
- | |||
- | accept | ||
- | domains | ||
- | |||
- | require verify | ||
- | |||
- | deny message | ||
- | condition | ||
- | |||
- | deny message | ||
- | condition | ||
- | {bezeqint\\.net|net\\.il|dialup|dsl|pool|peer|dhcp} \ | ||
- | {yes}{no}} | ||
- | |||
- | deny message | ||
- | $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text | ||
- | log_message | ||
- | dnslists | ||
- | deny message | ||
- | $sender_host_address rejected - see http:// | ||
- | log_message | ||
- | dnslists | ||
- | deny message | ||
- | $sender_host_address for bad WHOIS info, see http:// | ||
- | log_message | ||
- | dnslists | ||
- | deny message | ||
- | is in a black list at $dnslist_domain\n$dnslist_text | ||
- | log_message | ||
- | dnslists | ||
- | deny message | ||
- | is in a black list at $dnslist_domain\n$dnslist_text | ||
- | log_message | ||
- | dnslists | ||
- | deny message | ||
- | http:// | ||
- | log_message | ||
- | dnslists | ||
- | deny message | ||
- | Open Proxy, see: $dnslist_domain\n$dnslist_text | ||
- | log_message | ||
- | dnslists | ||
- | |||
- | accept | ||
- | endpass | ||
- | message | ||
- | verify | ||
- | |||
- | accept | ||
- | endpass | ||
- | message | ||
- | verify | ||
- | |||
- | accept | ||
- | accept | ||
- | deny message | ||
- | |||
- | acl_check_mime: | ||
- | |||
- | warn decode = default | ||
- | |||
- | deny message = Blacklisted file extension detected ($mime_filename) | ||
- | | ||
- | {${lc: | ||
- | {\N(\.exe|\.pif|\.bat|\.scr|\.lnk|\.com|\.vbs|\.cpl)$\N} \ | ||
- | {1}{0}} | ||
- | |||
- | deny message = Sorry, noone speaks chinese here | ||
- | | ||
- | |||
- | accept | ||
- | |||
- | ###################################################################### | ||
- | # ROUTERS CONFIGURATION | ||
- | # | ||
- | ###################################################################### | ||
- | # THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT! | ||
- | # An address is passed to each router in turn until it is accepted. | ||
- | ###################################################################### | ||
- | |||
- | begin routers | ||
- | |||
- | dnslookup: | ||
- | driver = dnslookup | ||
- | domains = ! +local_domains | ||
- | transport = remote_smtp | ||
- | ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 | ||
- | no_more | ||
- | |||
- | system_aliases: | ||
- | driver = redirect | ||
- | allow_fail | ||
- | allow_defer | ||
- | data = ${lookup mysql{SELECT recipients FROM aliases \ | ||
- | WHERE local_part=' | ||
- | |||
- | userforward: | ||
- | driver = redirect | ||
- | allow_fail | ||
- | allow_defer | ||
- | data = ${lookup mysql{SELECT recipients FROM userforward \ | ||
- | WHERE local_part=' | ||
- | |||
- | virtual_localuser: | ||
- | driver = accept | ||
- | domains = ${lookup mysql{SELECT domain from domains WHERE domain=' | ||
- | local_parts = ${lookup mysql{SELECT login from users \ | ||
- | WHERE login=' | ||
- | transport = local_delivery | ||
- | |||
- | ###################################################################### | ||
- | # TRANSPORTS CONFIGURATION | ||
- | ###################################################################### | ||
- | # ORDER DOES NOT MATTER | ||
- | # Only one appropriate transport is called for each delivery. | ||
- | ###################################################################### | ||
- | |||
- | begin transports | ||
- | |||
- | remote_smtp: | ||
- | driver = smtp | ||
- | |||
- | local_delivery: | ||
- | driver = appendfile | ||
- | check_string = "" | ||
- | create_directory | ||
- | delivery_date_add | ||
- | directory = / | ||
- | directory_mode = 770 | ||
- | envelope_to_add | ||
- | group = mail | ||
- | maildir_format | ||
- | maildir_tag = , | ||
- | message_prefix = "" | ||
- | message_suffix = "" | ||
- | mode = 0660 | ||
- | quota = ${lookup mysql{SELECT quota FROM users \ | ||
- | WHERE login=' | ||
- | quota_size_regex = S=(\d+)$ | ||
- | quota_warn_threshold = 75% | ||
- | return_path_add | ||
- | |||
- | | ||
- | driver = pipe | ||
- | return_output | ||
- | |||
- | address_file: | ||
- | driver = appendfile | ||
- | delivery_date_add | ||
- | envelope_to_add | ||
- | return_path_add | ||
- | |||
- | address_reply: | ||
- | driver = autoreply | ||
- | |||
- | ###################################################################### | ||
- | # RETRY CONFIGURATION | ||
- | ###################################################################### | ||
- | |||
- | begin retry | ||
- | |||
- | * quota | ||
- | * * | ||
- | |||
- | |||
- | ###################################################################### | ||
- | # REWRITE CONFIGURATION | ||
- | ###################################################################### | ||
- | |||
- | begin rewrite | ||
- | |||
- | ###################################################################### | ||
- | # | ||
- | ###################################################################### | ||
- | |||
- | begin authenticators | ||
- | |||
- | auth_plain: | ||
- | driver = plaintext | ||
- | public_name = PLAIN | ||
- | server_condition = ${lookup mysql{SELECT login FROM users \ | ||
- | WHERE login = ' | ||
- | AND domain = ' | ||
- | AND decrypt = ' | ||
- | AND status = ' | ||
- | server_prompts = : | ||
- | server_set_id = $2 | ||
- | |||
- | auth_login: | ||
- | driver = plaintext | ||
- | public_name = LOGIN | ||
- | server_condition = ${lookup mysql{SELECT login FROM users \ | ||
- | WHERE login = ' | ||
- | AND domain = ' | ||
- | AND decrypt = ' | ||
- | AND status = ' | ||
- | server_prompts = Username:: : Password:: | ||
- | server_set_id = $1 | ||
- | |||
- | auth_cram_md5: | ||
- | driver = cram_md5 | ||
- | public_name = CRAM-MD5 | ||
- | server_secret = ${lookup mysql{SELECT decrypt FROM users \ | ||
- | WHERE login = ' | ||
- | AND domain = ' | ||
- | AND status = ' | ||
- | server_set_id = $1 | ||
- | |||
- | # End of Exim configuration file | ||
- | </ |
exim4/install_exim4_complete.1478607594.txt.gz · Last modified: 2020/07/15 09:30 (external edit)