mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2026-07-04 10:18:07 +02:00
Install/upgrade and UI updates: monolithic install, SnappyMail, firewall, to-do docs
- Install: monolithic install script, venvsetup_modules and venvsetup_monolithic, install_modules (parse_main, menus, actions, etc.), remove legacy email-configs and php-configs from repo, add install/snappymail and Rainloop->SnappyMail migration script - CyberPanel: urls.py, cyberpanel.sh, cyberpanel_upgrade_monolithic.sh tweaks - Firewall: firewall.js and firewall.html updates - plogical: mailUtilities.py, upgrade.py; upgrade_modules 10_post_tweak.sh - pluginHolder: deploy-plugins-template.sh - to-do: docs (git conflicts, HTTP 500 recovery, phpMyAdmin, plugins, SnappyMail rename, install/upgrade OS support, security whitelist, etc.) - upgrade_modules: 02_checks_part1/part2.txt
This commit is contained in:
@@ -1,476 +0,0 @@
|
||||
# ACCESS(5) ACCESS(5)
|
||||
#
|
||||
# NAME
|
||||
# access - Postfix SMTP server access table
|
||||
#
|
||||
# SYNOPSIS
|
||||
# postmap /etc/postfix/access
|
||||
#
|
||||
# postmap -q "string" /etc/postfix/access
|
||||
#
|
||||
# postmap -q - /etc/postfix/access <inputfile
|
||||
#
|
||||
# DESCRIPTION
|
||||
# This document describes access control on remote SMTP
|
||||
# client information: host names, network addresses, and
|
||||
# envelope sender or recipient addresses; it is implemented
|
||||
# by the Postfix SMTP server. See header_checks(5) or
|
||||
# body_checks(5) for access control on the content of email
|
||||
# messages.
|
||||
#
|
||||
# Normally, the access(5) table is specified as a text file
|
||||
# that serves as input to the postmap(1) command. The
|
||||
# result, an indexed file in dbm or db format, is used for
|
||||
# fast searching by the mail system. Execute the command
|
||||
# "postmap /etc/postfix/access" to rebuild an indexed file
|
||||
# after changing the corresponding text file.
|
||||
#
|
||||
# When the table is provided via other means such as NIS,
|
||||
# LDAP or SQL, the same lookups are done as for ordinary
|
||||
# indexed files.
|
||||
#
|
||||
# Alternatively, the table can be provided as a regular-
|
||||
# expression map where patterns are given as regular expres-
|
||||
# sions, or lookups can be directed to TCP-based server. In
|
||||
# those cases, the lookups are done in a slightly different
|
||||
# way as described below under "REGULAR EXPRESSION TABLES"
|
||||
# or "TCP-BASED TABLES".
|
||||
#
|
||||
# CASE FOLDING
|
||||
# The search string is folded to lowercase before database
|
||||
# lookup. As of Postfix 2.3, the search string is not case
|
||||
# folded with database types such as regexp: or pcre: whose
|
||||
# lookup fields can match both upper and lower case.
|
||||
#
|
||||
# TABLE FORMAT
|
||||
# The input format for the postmap(1) command is as follows:
|
||||
#
|
||||
# pattern action
|
||||
# When pattern matches a mail address, domain or host
|
||||
# address, perform the corresponding action.
|
||||
#
|
||||
# blank lines and comments
|
||||
# Empty lines and whitespace-only lines are ignored,
|
||||
# as are lines whose first non-whitespace character
|
||||
# is a `#'.
|
||||
#
|
||||
# multi-line text
|
||||
# A logical line starts with non-whitespace text. A
|
||||
# line that starts with whitespace continues a logi-
|
||||
# cal line.
|
||||
#
|
||||
# EMAIL ADDRESS PATTERNS
|
||||
# With lookups from indexed files such as DB or DBM, or from
|
||||
# networked tables such as NIS, LDAP or SQL, patterns are
|
||||
# tried in the order as listed below:
|
||||
#
|
||||
# user@domain
|
||||
# Matches the specified mail address.
|
||||
#
|
||||
# domain.tld
|
||||
# Matches domain.tld as the domain part of an email
|
||||
# address.
|
||||
#
|
||||
# The pattern domain.tld also matches subdomains, but
|
||||
# only when the string smtpd_access_maps is listed in
|
||||
# the Postfix parent_domain_matches_subdomains con-
|
||||
# figuration setting.
|
||||
#
|
||||
# .domain.tld
|
||||
# Matches subdomains of domain.tld, but only when the
|
||||
# string smtpd_access_maps is not listed in the Post-
|
||||
# fix parent_domain_matches_subdomains configuration
|
||||
# setting.
|
||||
#
|
||||
# user@ Matches all mail addresses with the specified user
|
||||
# part.
|
||||
#
|
||||
# Note: lookup of the null sender address is not possible
|
||||
# with some types of lookup table. By default, Postfix uses
|
||||
# <> as the lookup key for such addresses. The value is
|
||||
# specified with the smtpd_null_access_lookup_key parameter
|
||||
# in the Postfix main.cf file.
|
||||
#
|
||||
# EMAIL ADDRESS EXTENSION
|
||||
# When a mail address localpart contains the optional recip-
|
||||
# ient delimiter (e.g., user+foo@domain), the lookup order
|
||||
# becomes: user+foo@domain, user@domain, domain, user+foo@,
|
||||
# and user@.
|
||||
#
|
||||
# HOST NAME/ADDRESS PATTERNS
|
||||
# With lookups from indexed files such as DB or DBM, or from
|
||||
# networked tables such as NIS, LDAP or SQL, the following
|
||||
# lookup patterns are examined in the order as listed:
|
||||
#
|
||||
# domain.tld
|
||||
# Matches domain.tld.
|
||||
#
|
||||
# The pattern domain.tld also matches subdomains, but
|
||||
# only when the string smtpd_access_maps is listed in
|
||||
# the Postfix parent_domain_matches_subdomains con-
|
||||
# figuration setting.
|
||||
#
|
||||
# .domain.tld
|
||||
# Matches subdomains of domain.tld, but only when the
|
||||
# string smtpd_access_maps is not listed in the Post-
|
||||
# fix parent_domain_matches_subdomains configuration
|
||||
# setting.
|
||||
#
|
||||
# net.work.addr.ess
|
||||
#
|
||||
# net.work.addr
|
||||
#
|
||||
# net.work
|
||||
#
|
||||
# net Matches the specified IPv4 host address or subnet-
|
||||
# work. An IPv4 host address is a sequence of four
|
||||
# decimal octets separated by ".".
|
||||
#
|
||||
# Subnetworks are matched by repeatedly truncating
|
||||
# the last ".octet" from the remote IPv4 host address
|
||||
# string until a match is found in the access table,
|
||||
# or until further truncation is not possible.
|
||||
#
|
||||
# NOTE 1: The access map lookup key must be in canon-
|
||||
# ical form: do not specify unnecessary null charac-
|
||||
# ters, and do not enclose network address informa-
|
||||
# tion with "[]" characters.
|
||||
#
|
||||
# NOTE 2: use the cidr lookup table type to specify
|
||||
# network/netmask patterns. See cidr_table(5) for
|
||||
# details.
|
||||
#
|
||||
# net:work:addr:ess
|
||||
#
|
||||
# net:work:addr
|
||||
#
|
||||
# net:work
|
||||
#
|
||||
# net Matches the specified IPv6 host address or subnet-
|
||||
# work. An IPv6 host address is a sequence of three
|
||||
# to eight hexadecimal octet pairs separated by ":".
|
||||
#
|
||||
# Subnetworks are matched by repeatedly truncating
|
||||
# the last ":octetpair" from the remote IPv6 host
|
||||
# address string until a match is found in the access
|
||||
# table, or until further truncation is not possible.
|
||||
#
|
||||
# NOTE 1: the truncation and comparison are done with
|
||||
# the string representation of the IPv6 host address.
|
||||
# Thus, not all the ":" subnetworks will be tried.
|
||||
#
|
||||
# NOTE 2: The access map lookup key must be in canon-
|
||||
# ical form: do not specify unnecessary null charac-
|
||||
# ters, and do not enclose network address informa-
|
||||
# tion with "[]" characters.
|
||||
#
|
||||
# NOTE 3: use the cidr lookup table type to specify
|
||||
# network/netmask patterns. See cidr_table(5) for
|
||||
# details.
|
||||
#
|
||||
# IPv6 support is available in Postfix 2.2 and later.
|
||||
#
|
||||
# ACCEPT ACTIONS
|
||||
# OK Accept the address etc. that matches the pattern.
|
||||
#
|
||||
# all-numerical
|
||||
# An all-numerical result is treated as OK. This for-
|
||||
# mat is generated by address-based relay authoriza-
|
||||
# tion schemes such as pop-before-smtp.
|
||||
#
|
||||
# REJECT ACTIONS
|
||||
# Postfix version 2.3 and later support enhanced status
|
||||
# codes as defined in RFC 3463. When no code is specified
|
||||
# at the beginning of the text below, Postfix inserts a
|
||||
# default enhanced status code of "5.7.1" in the case of
|
||||
# reject actions, and "4.7.1" in the case of defer actions.
|
||||
# See "ENHANCED STATUS CODES" below.
|
||||
#
|
||||
# 4NN text
|
||||
#
|
||||
# 5NN text
|
||||
# Reject the address etc. that matches the pattern,
|
||||
# and respond with the numerical three-digit code and
|
||||
# text. 4NN means "try again later", while 5NN means
|
||||
# "do not try again".
|
||||
#
|
||||
# The following responses have special meaning for
|
||||
# the Postfix SMTP server:
|
||||
#
|
||||
# 421 text (Postfix 2.3 and later)
|
||||
#
|
||||
# 521 text (Postfix 2.6 and later)
|
||||
# After responding with the numerical three-
|
||||
# digit code and text, disconnect immediately
|
||||
# from the SMTP client. This frees up SMTP
|
||||
# server resources so that they can be made
|
||||
# available to another SMTP client.
|
||||
#
|
||||
# Note: The "521" response should be used only
|
||||
# with botnets and other malware where inter-
|
||||
# operability is of no concern. The "send 521
|
||||
# and disconnect" behavior is NOT defined in
|
||||
# the SMTP standard.
|
||||
#
|
||||
# REJECT optional text...
|
||||
# Reject the address etc. that matches the pattern.
|
||||
# Reply with "$access_map_reject_code optional
|
||||
# text..." when the optional text is specified, oth-
|
||||
# erwise reply with a generic error response message.
|
||||
#
|
||||
# DEFER optional text...
|
||||
# Reject the address etc. that matches the pattern.
|
||||
# Reply with "$access_map_defer_code optional
|
||||
# text..." when the optional text is specified, oth-
|
||||
# erwise reply with a generic error response message.
|
||||
#
|
||||
# This feature is available in Postfix 2.6 and later.
|
||||
#
|
||||
# DEFER_IF_REJECT optional text...
|
||||
# Defer the request if some later restriction would
|
||||
# result in a REJECT action. Reply with
|
||||
# "$access_map_defer_code 4.7.1 optional text..."
|
||||
# when the optional text is specified, otherwise
|
||||
# reply with a generic error response message.
|
||||
#
|
||||
# Prior to Postfix 2.6, the SMTP reply code is 450.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# DEFER_IF_PERMIT optional text...
|
||||
# Defer the request if some later restriction would
|
||||
# result in a an explicit or implicit PERMIT action.
|
||||
# Reply with "$access_map_defer_code 4.7.1 optional
|
||||
# text..." when the optional text is specified, oth-
|
||||
# erwise reply with a generic error response message.
|
||||
#
|
||||
# Prior to Postfix 2.6, the SMTP reply code is 450.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# OTHER ACTIONS
|
||||
# restriction...
|
||||
# Apply the named UCE restriction(s) (permit, reject,
|
||||
# reject_unauth_destination, and so on).
|
||||
#
|
||||
# BCC user@domain
|
||||
# Send one copy of the message to the specified
|
||||
# recipient.
|
||||
#
|
||||
# If multiple BCC actions are specified within the
|
||||
# same SMTP MAIL transaction, only the last action
|
||||
# will be used.
|
||||
#
|
||||
# This feature is not part of the stable Postfix
|
||||
# release.
|
||||
#
|
||||
# DISCARD optional text...
|
||||
# Claim successful delivery and silently discard the
|
||||
# message. Log the optional text if specified, oth-
|
||||
# erwise log a generic message.
|
||||
#
|
||||
# Note: this action currently affects all recipients
|
||||
# of the message. To discard only one recipient
|
||||
# without discarding the entire message, use the
|
||||
# transport(5) table to direct mail to the discard(8)
|
||||
# service.
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# DUNNO Pretend that the lookup key was not found. This
|
||||
# prevents Postfix from trying substrings of the
|
||||
# lookup key (such as a subdomain name, or a network
|
||||
# address subnetwork).
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# FILTER transport:destination
|
||||
# After the message is queued, send the entire mes-
|
||||
# sage through the specified external content filter.
|
||||
# The transport name specifies the first field of a
|
||||
# mail delivery agent definition in master.cf; the
|
||||
# syntax of the next-hop destination is described in
|
||||
# the manual page of the corresponding delivery
|
||||
# agent. More information about external content
|
||||
# filters is in the Postfix FILTER_README file.
|
||||
#
|
||||
# Note 1: do not use $number regular expression sub-
|
||||
# stitutions for transport or destination unless you
|
||||
# know that the information has a trusted origin.
|
||||
#
|
||||
# Note 2: this action overrides the main.cf con-
|
||||
# tent_filter setting, and affects all recipients of
|
||||
# the message. In the case that multiple FILTER
|
||||
# actions fire, only the last one is executed.
|
||||
#
|
||||
# Note 3: the purpose of the FILTER command is to
|
||||
# override message routing. To override the recipi-
|
||||
# ent's transport but not the next-hop destination,
|
||||
# specify an empty filter destination (Postfix 2.7
|
||||
# and later), or specify a transport:destination that
|
||||
# delivers through a different Postfix instance
|
||||
# (Postfix 2.6 and earlier). Other options are using
|
||||
# the recipient-dependent transport_maps or the sen-
|
||||
# der-dependent sender_dependent_default_transport-
|
||||
# _maps features.
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# HOLD optional text...
|
||||
# Place the message on the hold queue, where it will
|
||||
# sit until someone either deletes it or releases it
|
||||
# for delivery. Log the optional text if specified,
|
||||
# otherwise log a generic message.
|
||||
#
|
||||
# Mail that is placed on hold can be examined with
|
||||
# the postcat(1) command, and can be destroyed or
|
||||
# released with the postsuper(1) command.
|
||||
#
|
||||
# Note: use "postsuper -r" to release mail that was
|
||||
# kept on hold for a significant fraction of $maxi-
|
||||
# mal_queue_lifetime or $bounce_queue_lifetime, or
|
||||
# longer. Use "postsuper -H" only for mail that will
|
||||
# not expire within a few delivery attempts.
|
||||
#
|
||||
# Note: this action currently affects all recipients
|
||||
# of the message.
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# PREPEND headername: headervalue
|
||||
# Prepend the specified message header to the mes-
|
||||
# sage. When more than one PREPEND action executes,
|
||||
# the first prepended header appears before the sec-
|
||||
# ond etc. prepended header.
|
||||
#
|
||||
# Note: this action must execute before the message
|
||||
# content is received; it cannot execute in the con-
|
||||
# text of smtpd_end_of_data_restrictions.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# REDIRECT user@domain
|
||||
# After the message is queued, send the message to
|
||||
# the specified address instead of the intended
|
||||
# recipient(s).
|
||||
#
|
||||
# Note: this action overrides the FILTER action, and
|
||||
# currently affects all recipients of the message.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# WARN optional text...
|
||||
# Log a warning with the optional text, together with
|
||||
# client information and if available, with helo,
|
||||
# sender, recipient and protocol information.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# ENHANCED STATUS CODES
|
||||
# Postfix version 2.3 and later support enhanced status
|
||||
# codes as defined in RFC 3463. When an enhanced status
|
||||
# code is specified in an access table, it is subject to
|
||||
# modification. The following transformations are needed
|
||||
# when the same access table is used for client, helo,
|
||||
# sender, or recipient access restrictions; they happen
|
||||
# regardless of whether Postfix replies to a MAIL FROM, RCPT
|
||||
# TO or other SMTP command.
|
||||
#
|
||||
# o When a sender address matches a REJECT action, the
|
||||
# Postfix SMTP server will transform a recipient DSN
|
||||
# status (e.g., 4.1.1-4.1.6) into the corresponding
|
||||
# sender DSN status, and vice versa.
|
||||
#
|
||||
# o When non-address information matches a REJECT
|
||||
# action (such as the HELO command argument or the
|
||||
# client hostname/address), the Postfix SMTP server
|
||||
# will transform a sender or recipient DSN status
|
||||
# into a generic non-address DSN status (e.g.,
|
||||
# 4.0.0).
|
||||
#
|
||||
# REGULAR EXPRESSION TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# the table is given in the form of regular expressions. For
|
||||
# a description of regular expression lookup table syntax,
|
||||
# see regexp_table(5) or pcre_table(5).
|
||||
#
|
||||
# Each pattern is a regular expression that is applied to
|
||||
# the entire string being looked up. Depending on the appli-
|
||||
# cation, that string is an entire client hostname, an
|
||||
# entire client IP address, or an entire mail address. Thus,
|
||||
# no parent domain or parent network search is done,
|
||||
# user@domain mail addresses are not broken up into their
|
||||
# user@ and domain constituent parts, nor is user+foo broken
|
||||
# up into user and foo.
|
||||
#
|
||||
# Patterns are applied in the order as specified in the ta-
|
||||
# ble, until a pattern is found that matches the search
|
||||
# string.
|
||||
#
|
||||
# Actions are the same as with indexed file lookups, with
|
||||
# the additional feature that parenthesized substrings from
|
||||
# the pattern can be interpolated as $1, $2 and so on.
|
||||
#
|
||||
# TCP-BASED TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# lookups are directed to a TCP-based server. For a descrip-
|
||||
# tion of the TCP client/server lookup protocol, see tcp_ta-
|
||||
# ble(5). This feature is not available up to and including
|
||||
# Postfix version 2.4.
|
||||
#
|
||||
# Each lookup operation uses the entire query string once.
|
||||
# Depending on the application, that string is an entire
|
||||
# client hostname, an entire client IP address, or an entire
|
||||
# mail address. Thus, no parent domain or parent network
|
||||
# search is done, user@domain mail addresses are not broken
|
||||
# up into their user@ and domain constituent parts, nor is
|
||||
# user+foo broken up into user and foo.
|
||||
#
|
||||
# Actions are the same as with indexed file lookups.
|
||||
#
|
||||
# EXAMPLE
|
||||
# The following example uses an indexed file, so that the
|
||||
# order of table entries does not matter. The example per-
|
||||
# mits access by the client at address 1.2.3.4 but rejects
|
||||
# all other clients in 1.2.3.0/24. Instead of hash lookup
|
||||
# tables, some systems use dbm. Use the command "postconf
|
||||
# -m" to find out what lookup tables Postfix supports on
|
||||
# your system.
|
||||
#
|
||||
# /etc/postfix/main.cf:
|
||||
# smtpd_client_restrictions =
|
||||
# check_client_access hash:/etc/postfix/access
|
||||
#
|
||||
# /etc/postfix/access:
|
||||
# 1.2.3 REJECT
|
||||
# 1.2.3.4 OK
|
||||
#
|
||||
# Execute the command "postmap /etc/postfix/access" after
|
||||
# editing the file.
|
||||
#
|
||||
# BUGS
|
||||
# The table format does not understand quoting conventions.
|
||||
#
|
||||
# SEE ALSO
|
||||
# postmap(1), Postfix lookup table manager
|
||||
# smtpd(8), SMTP server
|
||||
# postconf(5), configuration parameters
|
||||
# transport(5), transport:nexthop syntax
|
||||
#
|
||||
# README FILES
|
||||
# Use "postconf readme_directory" or "postconf html_direc-
|
||||
# tory" to locate this information.
|
||||
# SMTPD_ACCESS_README, built-in SMTP server access control
|
||||
# DATABASE_README, Postfix lookup table overview
|
||||
#
|
||||
# LICENSE
|
||||
# The Secure Mailer license must be distributed with this
|
||||
# software.
|
||||
#
|
||||
# AUTHOR(S)
|
||||
# Wietse Venema
|
||||
# IBM T.J. Watson Research
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# ACCESS(5)
|
||||
@@ -1,278 +0,0 @@
|
||||
# CANONICAL(5) CANONICAL(5)
|
||||
#
|
||||
# NAME
|
||||
# canonical - Postfix canonical table format
|
||||
#
|
||||
# SYNOPSIS
|
||||
# postmap /etc/postfix/canonical
|
||||
#
|
||||
# postmap -q "string" /etc/postfix/canonical
|
||||
#
|
||||
# postmap -q - /etc/postfix/canonical <inputfile
|
||||
#
|
||||
# DESCRIPTION
|
||||
# The optional canonical(5) table specifies an address map-
|
||||
# ping for local and non-local addresses. The mapping is
|
||||
# used by the cleanup(8) daemon, before mail is stored into
|
||||
# the queue. The address mapping is recursive.
|
||||
#
|
||||
# Normally, the canonical(5) table is specified as a text
|
||||
# file that serves as input to the postmap(1) command. The
|
||||
# result, an indexed file in dbm or db format, is used for
|
||||
# fast searching by the mail system. Execute the command
|
||||
# "postmap /etc/postfix/canonical" to rebuild an indexed
|
||||
# file after changing the corresponding text file.
|
||||
#
|
||||
# When the table is provided via other means such as NIS,
|
||||
# LDAP or SQL, the same lookups are done as for ordinary
|
||||
# indexed files.
|
||||
#
|
||||
# Alternatively, the table can be provided as a regular-
|
||||
# expression map where patterns are given as regular expres-
|
||||
# sions, or lookups can be directed to TCP-based server. In
|
||||
# those cases, the lookups are done in a slightly different
|
||||
# way as described below under "REGULAR EXPRESSION TABLES"
|
||||
# or "TCP-BASED TABLES".
|
||||
#
|
||||
# By default the canonical(5) mapping affects both message
|
||||
# header addresses (i.e. addresses that appear inside mes-
|
||||
# sages) and message envelope addresses (for example, the
|
||||
# addresses that are used in SMTP protocol commands). This
|
||||
# is controlled with the canonical_classes parameter.
|
||||
#
|
||||
# NOTE: Postfix versions 2.2 and later rewrite message head-
|
||||
# ers from remote SMTP clients only if the client matches
|
||||
# the local_header_rewrite_clients parameter, or if the
|
||||
# remote_header_rewrite_domain configuration parameter spec-
|
||||
# ifies a non-empty value. To get the behavior before Post-
|
||||
# fix 2.2, specify "local_header_rewrite_clients =
|
||||
# static:all".
|
||||
#
|
||||
# Typically, one would use the canonical(5) table to replace
|
||||
# login names by Firstname.Lastname, or to clean up
|
||||
# addresses produced by legacy mail systems.
|
||||
#
|
||||
# The canonical(5) mapping is not to be confused with vir-
|
||||
# tual alias support or with local aliasing. To change the
|
||||
# destination but not the headers, use the virtual(5) or
|
||||
# aliases(5) map instead.
|
||||
#
|
||||
# CASE FOLDING
|
||||
# The search string is folded to lowercase before database
|
||||
# lookup. As of Postfix 2.3, the search string is not case
|
||||
# folded with database types such as regexp: or pcre: whose
|
||||
# lookup fields can match both upper and lower case.
|
||||
#
|
||||
# TABLE FORMAT
|
||||
# The input format for the postmap(1) command is as follows:
|
||||
#
|
||||
# pattern result
|
||||
# When pattern matches a mail address, replace it by
|
||||
# the corresponding result.
|
||||
#
|
||||
# blank lines and comments
|
||||
# Empty lines and whitespace-only lines are ignored,
|
||||
# as are lines whose first non-whitespace character
|
||||
# is a `#'.
|
||||
#
|
||||
# multi-line text
|
||||
# A logical line starts with non-whitespace text. A
|
||||
# line that starts with whitespace continues a logi-
|
||||
# cal line.
|
||||
#
|
||||
# TABLE SEARCH ORDER
|
||||
# With lookups from indexed files such as DB or DBM, or from
|
||||
# networked tables such as NIS, LDAP or SQL, patterns are
|
||||
# tried in the order as listed below:
|
||||
#
|
||||
# user@domain address
|
||||
# Replace user@domain by address. This form has the
|
||||
# highest precedence.
|
||||
#
|
||||
# This is useful to clean up addresses produced by
|
||||
# legacy mail systems. It can also be used to pro-
|
||||
# duce Firstname.Lastname style addresses, but see
|
||||
# below for a simpler solution.
|
||||
#
|
||||
# user address
|
||||
# Replace user@site by address when site is equal to
|
||||
# $myorigin, when site is listed in $mydestination,
|
||||
# or when it is listed in $inet_interfaces or
|
||||
# $proxy_interfaces.
|
||||
#
|
||||
# This form is useful for replacing login names by
|
||||
# Firstname.Lastname.
|
||||
#
|
||||
# @domain address
|
||||
# Replace other addresses in domain by address. This
|
||||
# form has the lowest precedence.
|
||||
#
|
||||
# Note: @domain is a wild-card. When this form is
|
||||
# applied to recipient addresses, the Postfix SMTP
|
||||
# server accepts mail for any recipient in domain,
|
||||
# regardless of whether that recipient exists. This
|
||||
# may turn your mail system into a backscatter
|
||||
# source: Postfix first accepts mail for non-existent
|
||||
# recipients and then tries to return that mail as
|
||||
# "undeliverable" to the often forged sender address.
|
||||
#
|
||||
# RESULT ADDRESS REWRITING
|
||||
# The lookup result is subject to address rewriting:
|
||||
#
|
||||
# o When the result has the form @otherdomain, the
|
||||
# result becomes the same user in otherdomain.
|
||||
#
|
||||
# o When "append_at_myorigin=yes", append "@$myorigin"
|
||||
# to addresses without "@domain".
|
||||
#
|
||||
# o When "append_dot_mydomain=yes", append ".$mydomain"
|
||||
# to addresses without ".domain".
|
||||
#
|
||||
# ADDRESS EXTENSION
|
||||
# When a mail address localpart contains the optional recip-
|
||||
# ient delimiter (e.g., user+foo@domain), the lookup order
|
||||
# becomes: user+foo@domain, user@domain, user+foo, user, and
|
||||
# @domain.
|
||||
#
|
||||
# The propagate_unmatched_extensions parameter controls
|
||||
# whether an unmatched address extension (+foo) is propa-
|
||||
# gated to the result of table lookup.
|
||||
#
|
||||
# REGULAR EXPRESSION TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# the table is given in the form of regular expressions. For
|
||||
# a description of regular expression lookup table syntax,
|
||||
# see regexp_table(5) or pcre_table(5).
|
||||
#
|
||||
# Each pattern is a regular expression that is applied to
|
||||
# the entire address being looked up. Thus, user@domain mail
|
||||
# addresses are not broken up into their user and @domain
|
||||
# constituent parts, nor is user+foo broken up into user and
|
||||
# foo.
|
||||
#
|
||||
# Patterns are applied in the order as specified in the ta-
|
||||
# ble, until a pattern is found that matches the search
|
||||
# string.
|
||||
#
|
||||
# Results are the same as with indexed file lookups, with
|
||||
# the additional feature that parenthesized substrings from
|
||||
# the pattern can be interpolated as $1, $2 and so on.
|
||||
#
|
||||
# TCP-BASED TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# lookups are directed to a TCP-based server. For a descrip-
|
||||
# tion of the TCP client/server lookup protocol, see tcp_ta-
|
||||
# ble(5). This feature is not available up to and including
|
||||
# Postfix version 2.4.
|
||||
#
|
||||
# Each lookup operation uses the entire address once. Thus,
|
||||
# user@domain mail addresses are not broken up into their
|
||||
# user and @domain constituent parts, nor is user+foo broken
|
||||
# up into user and foo.
|
||||
#
|
||||
# Results are the same as with indexed file lookups.
|
||||
#
|
||||
# BUGS
|
||||
# The table format does not understand quoting conventions.
|
||||
#
|
||||
# CONFIGURATION PARAMETERS
|
||||
# The following main.cf parameters are especially relevant.
|
||||
# The text below provides only a parameter summary. See
|
||||
# postconf(5) for more details including examples.
|
||||
#
|
||||
# canonical_classes
|
||||
# What addresses are subject to canonical address
|
||||
# mapping.
|
||||
#
|
||||
# canonical_maps
|
||||
# List of canonical mapping tables.
|
||||
#
|
||||
# recipient_canonical_maps
|
||||
# Address mapping lookup table for envelope and
|
||||
# header recipient addresses.
|
||||
#
|
||||
# sender_canonical_maps
|
||||
# Address mapping lookup table for envelope and
|
||||
# header sender addresses.
|
||||
#
|
||||
# propagate_unmatched_extensions
|
||||
# A list of address rewriting or forwarding mecha-
|
||||
# nisms that propagate an address extension from the
|
||||
# original address to the result. Specify zero or
|
||||
# more of canonical, virtual, alias, forward,
|
||||
# include, or generic.
|
||||
#
|
||||
# Other parameters of interest:
|
||||
#
|
||||
# inet_interfaces
|
||||
# The network interface addresses that this system
|
||||
# receives mail on. You need to stop and start Post-
|
||||
# fix when this parameter changes.
|
||||
#
|
||||
# local_header_rewrite_clients
|
||||
# Rewrite message header addresses in mail from these
|
||||
# clients and update incomplete addresses with the
|
||||
# domain name in $myorigin or $mydomain; either don't
|
||||
# rewrite message headers from other clients at all,
|
||||
# or rewrite message headers and update incomplete
|
||||
# addresses with the domain specified in the
|
||||
# remote_header_rewrite_domain parameter.
|
||||
#
|
||||
# proxy_interfaces
|
||||
# Other interfaces that this machine receives mail on
|
||||
# by way of a proxy agent or network address transla-
|
||||
# tor.
|
||||
#
|
||||
# masquerade_classes
|
||||
# List of address classes subject to masquerading:
|
||||
# zero or more of envelope_sender, envelope_recipi-
|
||||
# ent, header_sender, header_recipient.
|
||||
#
|
||||
# masquerade_domains
|
||||
# List of domains that hide their subdomain struc-
|
||||
# ture.
|
||||
#
|
||||
# masquerade_exceptions
|
||||
# List of user names that are not subject to address
|
||||
# masquerading.
|
||||
#
|
||||
# mydestination
|
||||
# List of domains that this mail system considers
|
||||
# local.
|
||||
#
|
||||
# myorigin
|
||||
# The domain that is appended to locally-posted mail.
|
||||
#
|
||||
# owner_request_special
|
||||
# Give special treatment to owner-xxx and xxx-request
|
||||
# addresses.
|
||||
#
|
||||
# remote_header_rewrite_domain
|
||||
# Don't rewrite message headers from remote clients
|
||||
# at all when this parameter is empty; otherwise, re-
|
||||
# write message headers and append the specified
|
||||
# domain name to incomplete addresses.
|
||||
#
|
||||
# SEE ALSO
|
||||
# cleanup(8), canonicalize and enqueue mail
|
||||
# postmap(1), Postfix lookup table manager
|
||||
# postconf(5), configuration parameters
|
||||
# virtual(5), virtual aliasing
|
||||
#
|
||||
# README FILES
|
||||
# Use "postconf readme_directory" or "postconf html_direc-
|
||||
# tory" to locate this information.
|
||||
# DATABASE_README, Postfix lookup table overview
|
||||
# ADDRESS_REWRITING_README, address rewriting guide
|
||||
#
|
||||
# LICENSE
|
||||
# The Secure Mailer license must be distributed with this
|
||||
# software.
|
||||
#
|
||||
# AUTHOR(S)
|
||||
# Wietse Venema
|
||||
# IBM T.J. Watson Research
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# CANONICAL(5)
|
||||
@@ -1,21 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDizCCAnOgAwIBAgIJAIJuX7vycgv0MA0GCSqGSIb3DQEBCwUAMFwxCzAJBgNV
|
||||
BAYTAlVTMQ8wDQYDVQQIDAZEZW5pYWwxFDASBgNVBAcMC1NwcmluZ2ZpZWxkMQww
|
||||
CgYDVQQKDANEaXMxGDAWBgNVBAMMD3d3dy5leGFtcGxlLmNvbTAeFw0xNzEwMTEw
|
||||
ODU3MzVaFw0yNzEwMDkwODU3MzVaMFwxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIDAZE
|
||||
ZW5pYWwxFDASBgNVBAcMC1NwcmluZ2ZpZWxkMQwwCgYDVQQKDANEaXMxGDAWBgNV
|
||||
BAMMD3d3dy5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBANokcgV4eK3soeeLSuBP2Qi55RO/RSS53TQV7NpxgiKkKRYoMoUz7Hh1Vdc8
|
||||
nV7LfKYWxECzvBUWbRFrgYE768WI3HUcFGdtxm62Nskg+IL5Ik403dQ5QOZFKykX
|
||||
X9vEpBmGTgsOaP1fnaeV7qa69w666Wp1HrAul7MPi/uUklBDfjubGiZUD52pYEPD
|
||||
C/3N/+fH6rd6O7HzZMWpNSd4Yic3XBQjPmFRO33gmJDM5NEAIt026XI4n8AzQYI2
|
||||
VmgeGRax5vrs8hMPjM8QkAeUrWcmMkwa2hcVPrxKFu/kgvduP9RtoD0/n5M6Bhpc
|
||||
n1Jma6T1XmiKtbNqK5ToaAebS4MCAwEAAaNQME4wHQYDVR0OBBYEFAMyeCibjAJR
|
||||
cp3wpZhTwWwXWsnoMB8GA1UdIwQYMBaAFAMyeCibjAJRcp3wpZhTwWwXWsnoMAwG
|
||||
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAKE+Dgv4hwhX0HGQ8oi1a5VN
|
||||
ij0uIn/hDmWPXVH5TxtPSR/GcjWH6csRl1VuSrXAxhppopD2NpvyUgOhvH7ZaY2C
|
||||
8BUs+KrQ4dB2ipW5MPgl7CfzAGip7/LzCFKdn26YBViNwAn8pwIJd79XcuhmbxzL
|
||||
N3zUQXv2uDSo6i7jkxlTglnsqP9N9/GdaVaNmcGGblAfXbiZGGa8/uboz3WdDO3c
|
||||
sIGf9J7RNrn0Q9Xq6K7Xk9qV8QOVVxp/ClwsG1Tq6ZR362wG44YBYc0H7/3AuySu
|
||||
p73fSvjg7cOzcG1z66Tiafpiqtfu6fWmDkZAVctH8NSf8wCfzwL+jgygo7NSLB8=
|
||||
-----END CERTIFICATE-----
|
||||
@@ -1,4 +0,0 @@
|
||||
driver = mysql
|
||||
connect = host=127.0.0.1 dbname=cyberpanel user=cyberpanel password=1qaz@9xvps
|
||||
password_query = SELECT email as user, password FROM e_users WHERE email='%u';
|
||||
user_query = SELECT '5000' as uid, '5000' as gid, mail FROM e_users WHERE email='%u';
|
||||
@@ -1,85 +0,0 @@
|
||||
protocols = imap pop3
|
||||
log_timestamp = "%Y-%m-%d %H:%M:%S "
|
||||
#mail_location = maildir:/home/vmail/%d/%n/Maildir
|
||||
#mail_location = mdbox:/home/vmail/%d/%n/Mdbox
|
||||
|
||||
ssl_cert = <cert.pem
|
||||
ssl_key = <key.pem
|
||||
|
||||
mail_plugins = zlib
|
||||
|
||||
mdbox_rotate_size = 2M
|
||||
|
||||
namespace {
|
||||
type = private
|
||||
separator = .
|
||||
prefix = INBOX.
|
||||
inbox = yes
|
||||
}
|
||||
|
||||
service auth {
|
||||
unix_listener auth-master {
|
||||
mode = 0600
|
||||
user = vmail
|
||||
}
|
||||
|
||||
unix_listener /var/spool/postfix/private/auth {
|
||||
mode = 0666
|
||||
user = postfix
|
||||
group = postfix
|
||||
}
|
||||
|
||||
user = root
|
||||
}
|
||||
|
||||
service auth-worker {
|
||||
user = root
|
||||
}
|
||||
|
||||
protocol lda {
|
||||
log_path = /home/vmail/dovecot-deliver.log
|
||||
auth_socket_path = /var/run/dovecot/auth-master
|
||||
postmaster_address = postmaster@example.com
|
||||
|
||||
mail_plugins = zlib
|
||||
}
|
||||
|
||||
protocol pop3 {
|
||||
pop3_uidl_format = %08Xu%08Xv
|
||||
mail_plugins = $mail_plugins zlib
|
||||
}
|
||||
|
||||
protocol imap {
|
||||
mail_plugins = $mail_plugins zlib imap_zlib
|
||||
}
|
||||
|
||||
passdb {
|
||||
driver = sql
|
||||
args = /etc/dovecot/dovecot-sql.conf.ext
|
||||
}
|
||||
|
||||
userdb {
|
||||
driver = sql
|
||||
args = /etc/dovecot/dovecot-sql.conf.ext
|
||||
}
|
||||
|
||||
|
||||
plugin {
|
||||
|
||||
zlib_save = gz
|
||||
zlib_save_level = 6
|
||||
|
||||
}
|
||||
|
||||
service stats {
|
||||
unix_listener stats-reader {
|
||||
user = vmail
|
||||
group = vmail
|
||||
mode = 0660
|
||||
}
|
||||
unix_listener stats-writer {
|
||||
user = vmail
|
||||
group = vmail
|
||||
mode = 0660
|
||||
}
|
||||
}
|
||||
@@ -1,240 +0,0 @@
|
||||
# GENERIC(5) GENERIC(5)
|
||||
#
|
||||
# NAME
|
||||
# generic - Postfix generic table format
|
||||
#
|
||||
# SYNOPSIS
|
||||
# postmap /etc/postfix/generic
|
||||
#
|
||||
# postmap -q "string" /etc/postfix/generic
|
||||
#
|
||||
# postmap -q - /etc/postfix/generic <inputfile
|
||||
#
|
||||
# DESCRIPTION
|
||||
# The optional generic(5) table specifies an address mapping
|
||||
# that applies when mail is delivered. This is the opposite
|
||||
# of canonical(5) mapping, which applies when mail is
|
||||
# received.
|
||||
#
|
||||
# Typically, one would use the generic(5) table on a system
|
||||
# that does not have a valid Internet domain name and that
|
||||
# uses something like localdomain.local instead. The
|
||||
# generic(5) table is then used by the smtp(8) client to
|
||||
# transform local mail addresses into valid Internet mail
|
||||
# addresses when mail has to be sent across the Internet.
|
||||
# See the EXAMPLE section at the end of this document.
|
||||
#
|
||||
# The generic(5) mapping affects both message header
|
||||
# addresses (i.e. addresses that appear inside messages) and
|
||||
# message envelope addresses (for example, the addresses
|
||||
# that are used in SMTP protocol commands).
|
||||
#
|
||||
# Normally, the generic(5) table is specified as a text file
|
||||
# that serves as input to the postmap(1) command. The
|
||||
# result, an indexed file in dbm or db format, is used for
|
||||
# fast searching by the mail system. Execute the command
|
||||
# "postmap /etc/postfix/generic" to rebuild an indexed file
|
||||
# after changing the corresponding text file.
|
||||
#
|
||||
# When the table is provided via other means such as NIS,
|
||||
# LDAP or SQL, the same lookups are done as for ordinary
|
||||
# indexed files.
|
||||
#
|
||||
# Alternatively, the table can be provided as a regular-
|
||||
# expression map where patterns are given as regular expres-
|
||||
# sions, or lookups can be directed to TCP-based server. In
|
||||
# those case, the lookups are done in a slightly different
|
||||
# way as described below under "REGULAR EXPRESSION TABLES"
|
||||
# or "TCP-BASED TABLES".
|
||||
#
|
||||
# CASE FOLDING
|
||||
# The search string is folded to lowercase before database
|
||||
# lookup. As of Postfix 2.3, the search string is not case
|
||||
# folded with database types such as regexp: or pcre: whose
|
||||
# lookup fields can match both upper and lower case.
|
||||
#
|
||||
# TABLE FORMAT
|
||||
# The input format for the postmap(1) command is as follows:
|
||||
#
|
||||
# pattern result
|
||||
# When pattern matches a mail address, replace it by
|
||||
# the corresponding result.
|
||||
#
|
||||
# blank lines and comments
|
||||
# Empty lines and whitespace-only lines are ignored,
|
||||
# as are lines whose first non-whitespace character
|
||||
# is a `#'.
|
||||
#
|
||||
# multi-line text
|
||||
# A logical line starts with non-whitespace text. A
|
||||
# line that starts with whitespace continues a logi-
|
||||
# cal line.
|
||||
#
|
||||
# TABLE SEARCH ORDER
|
||||
# With lookups from indexed files such as DB or DBM, or from
|
||||
# networked tables such as NIS, LDAP or SQL, patterns are
|
||||
# tried in the order as listed below:
|
||||
#
|
||||
# user@domain address
|
||||
# Replace user@domain by address. This form has the
|
||||
# highest precedence.
|
||||
#
|
||||
# user address
|
||||
# Replace user@site by address when site is equal to
|
||||
# $myorigin, when site is listed in $mydestination,
|
||||
# or when it is listed in $inet_interfaces or
|
||||
# $proxy_interfaces.
|
||||
#
|
||||
# @domain address
|
||||
# Replace other addresses in domain by address. This
|
||||
# form has the lowest precedence.
|
||||
#
|
||||
# RESULT ADDRESS REWRITING
|
||||
# The lookup result is subject to address rewriting:
|
||||
#
|
||||
# o When the result has the form @otherdomain, the
|
||||
# result becomes the same user in otherdomain.
|
||||
#
|
||||
# o When "append_at_myorigin=yes", append "@$myorigin"
|
||||
# to addresses without "@domain".
|
||||
#
|
||||
# o When "append_dot_mydomain=yes", append ".$mydomain"
|
||||
# to addresses without ".domain".
|
||||
#
|
||||
# ADDRESS EXTENSION
|
||||
# When a mail address localpart contains the optional recip-
|
||||
# ient delimiter (e.g., user+foo@domain), the lookup order
|
||||
# becomes: user+foo@domain, user@domain, user+foo, user, and
|
||||
# @domain.
|
||||
#
|
||||
# The propagate_unmatched_extensions parameter controls
|
||||
# whether an unmatched address extension (+foo) is propa-
|
||||
# gated to the result of table lookup.
|
||||
#
|
||||
# REGULAR EXPRESSION TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# the table is given in the form of regular expressions. For
|
||||
# a description of regular expression lookup table syntax,
|
||||
# see regexp_table(5) or pcre_table(5).
|
||||
#
|
||||
# Each pattern is a regular expression that is applied to
|
||||
# the entire address being looked up. Thus, user@domain mail
|
||||
# addresses are not broken up into their user and @domain
|
||||
# constituent parts, nor is user+foo broken up into user and
|
||||
# foo.
|
||||
#
|
||||
# Patterns are applied in the order as specified in the ta-
|
||||
# ble, until a pattern is found that matches the search
|
||||
# string.
|
||||
#
|
||||
# Results are the same as with indexed file lookups, with
|
||||
# the additional feature that parenthesized substrings from
|
||||
# the pattern can be interpolated as $1, $2 and so on.
|
||||
#
|
||||
# TCP-BASED TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# lookups are directed to a TCP-based server. For a descrip-
|
||||
# tion of the TCP client/server lookup protocol, see tcp_ta-
|
||||
# ble(5). This feature is not available up to and including
|
||||
# Postfix version 2.4.
|
||||
#
|
||||
# Each lookup operation uses the entire address once. Thus,
|
||||
# user@domain mail addresses are not broken up into their
|
||||
# user and @domain constituent parts, nor is user+foo broken
|
||||
# up into user and foo.
|
||||
#
|
||||
# Results are the same as with indexed file lookups.
|
||||
#
|
||||
# EXAMPLE
|
||||
# The following shows a generic mapping with an indexed
|
||||
# file. When mail is sent to a remote host via SMTP, this
|
||||
# replaces his@localdomain.local by his ISP mail address,
|
||||
# replaces her@localdomain.local by her ISP mail address,
|
||||
# and replaces other local addresses by his ISP account,
|
||||
# with an address extension of +local (this example assumes
|
||||
# that the ISP supports "+" style address extensions).
|
||||
#
|
||||
# /etc/postfix/main.cf:
|
||||
# smtp_generic_maps = hash:/etc/postfix/generic
|
||||
#
|
||||
# /etc/postfix/generic:
|
||||
# his@localdomain.local hisaccount@hisisp.example
|
||||
# her@localdomain.local heraccount@herisp.example
|
||||
# @localdomain.local hisaccount+local@hisisp.example
|
||||
#
|
||||
# Execute the command "postmap /etc/postfix/generic" when-
|
||||
# ever the table is changed. Instead of hash, some systems
|
||||
# use dbm database files. To find out what tables your sys-
|
||||
# tem supports use the command "postconf -m".
|
||||
#
|
||||
# BUGS
|
||||
# The table format does not understand quoting conventions.
|
||||
#
|
||||
# CONFIGURATION PARAMETERS
|
||||
# The following main.cf parameters are especially relevant.
|
||||
# The text below provides only a parameter summary. See
|
||||
# postconf(5) for more details including examples.
|
||||
#
|
||||
# smtp_generic_maps
|
||||
# Address mapping lookup table for envelope and
|
||||
# header sender and recipient addresses while deliv-
|
||||
# ering mail via SMTP.
|
||||
#
|
||||
# propagate_unmatched_extensions
|
||||
# A list of address rewriting or forwarding mecha-
|
||||
# nisms that propagate an address extension from the
|
||||
# original address to the result. Specify zero or
|
||||
# more of canonical, virtual, alias, forward,
|
||||
# include, or generic.
|
||||
#
|
||||
# Other parameters of interest:
|
||||
#
|
||||
# inet_interfaces
|
||||
# The network interface addresses that this system
|
||||
# receives mail on. You need to stop and start Post-
|
||||
# fix when this parameter changes.
|
||||
#
|
||||
# proxy_interfaces
|
||||
# Other interfaces that this machine receives mail on
|
||||
# by way of a proxy agent or network address transla-
|
||||
# tor.
|
||||
#
|
||||
# mydestination
|
||||
# List of domains that this mail system considers
|
||||
# local.
|
||||
#
|
||||
# myorigin
|
||||
# The domain that is appended to locally-posted mail.
|
||||
#
|
||||
# owner_request_special
|
||||
# Give special treatment to owner-xxx and xxx-request
|
||||
# addresses.
|
||||
#
|
||||
# SEE ALSO
|
||||
# postmap(1), Postfix lookup table manager
|
||||
# postconf(5), configuration parameters
|
||||
# smtp(8), Postfix SMTP client
|
||||
#
|
||||
# README FILES
|
||||
# Use "postconf readme_directory" or "postconf html_direc-
|
||||
# tory" to locate this information.
|
||||
# ADDRESS_REWRITING_README, address rewriting guide
|
||||
# DATABASE_README, Postfix lookup table overview
|
||||
# STANDARD_CONFIGURATION_README, configuration examples
|
||||
#
|
||||
# LICENSE
|
||||
# The Secure Mailer license must be distributed with this
|
||||
# software.
|
||||
#
|
||||
# HISTORY
|
||||
# A genericstable feature appears in the Sendmail MTA.
|
||||
#
|
||||
# This feature is available in Postfix 2.2 and later.
|
||||
#
|
||||
# AUTHOR(S)
|
||||
# Wietse Venema
|
||||
# IBM T.J. Watson Research
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# GENERIC(5)
|
||||
@@ -1,496 +0,0 @@
|
||||
# HEADER_CHECKS(5) HEADER_CHECKS(5)
|
||||
#
|
||||
# NAME
|
||||
# header_checks - Postfix built-in content inspection
|
||||
#
|
||||
# SYNOPSIS
|
||||
# header_checks = pcre:/etc/postfix/header_checks
|
||||
# mime_header_checks = pcre:/etc/postfix/mime_header_checks
|
||||
# nested_header_checks = pcre:/etc/postfix/nested_header_checks
|
||||
# body_checks = pcre:/etc/postfix/body_checks
|
||||
#
|
||||
# milter_header_checks = pcre:/etc/postfix/milter_header_checks
|
||||
#
|
||||
# smtp_header_checks = pcre:/etc/postfix/smtp_header_checks
|
||||
# smtp_mime_header_checks = pcre:/etc/postfix/smtp_mime_header_checks
|
||||
# smtp_nested_header_checks = pcre:/etc/postfix/smtp_nested_header_checks
|
||||
# smtp_body_checks = pcre:/etc/postfix/smtp_body_checks
|
||||
#
|
||||
# postmap -q "string" pcre:/etc/postfix/filename
|
||||
# postmap -q - pcre:/etc/postfix/filename <inputfile
|
||||
#
|
||||
# DESCRIPTION
|
||||
# This document describes access control on the content of
|
||||
# message headers and message body lines; it is implemented
|
||||
# by the Postfix cleanup(8) server before mail is queued.
|
||||
# See access(5) for access control on remote SMTP client
|
||||
# information.
|
||||
#
|
||||
# Each message header or message body line is compared
|
||||
# against a list of patterns. When a match is found the
|
||||
# corresponding action is executed, and the matching process
|
||||
# is repeated for the next message header or message body
|
||||
# line.
|
||||
#
|
||||
# Note: message headers are examined one logical header at a
|
||||
# time, even when a message header spans multiple lines.
|
||||
# Body lines are always examined one line at a time.
|
||||
#
|
||||
# For examples, see the EXAMPLES section at the end of this
|
||||
# manual page.
|
||||
#
|
||||
# Postfix header or body_checks are designed to stop a flood
|
||||
# of mail from worms or viruses; they do not decode attach-
|
||||
# ments, and they do not unzip archives. See the documents
|
||||
# referenced below in the README FILES section if you need
|
||||
# more sophisticated content analysis.
|
||||
#
|
||||
# FILTERS WHILE RECEIVING MAIL
|
||||
# Postfix implements the following four built-in content
|
||||
# inspection classes while receiving mail:
|
||||
#
|
||||
# header_checks (default: empty)
|
||||
# These are applied to initial message headers
|
||||
# (except for the headers that are processed with
|
||||
# mime_header_checks).
|
||||
#
|
||||
# mime_header_checks (default: $header_checks)
|
||||
# These are applied to MIME related message headers
|
||||
# only.
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# nested_header_checks (default: $header_checks)
|
||||
# These are applied to message headers of attached
|
||||
# email messages (except for the headers that are
|
||||
# processed with mime_header_checks).
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# body_checks
|
||||
# These are applied to all other content, including
|
||||
# multi-part message boundaries.
|
||||
#
|
||||
# With Postfix versions before 2.0, all content after
|
||||
# the initial message headers is treated as body con-
|
||||
# tent.
|
||||
#
|
||||
# FILTERS AFTER RECEIVING MAIL
|
||||
# Postfix supports a subset of the built-in content inspec-
|
||||
# tion classes after the message is received:
|
||||
#
|
||||
# milter_header_checks (default: empty)
|
||||
# These are applied to headers that are added with
|
||||
# Milter applications.
|
||||
#
|
||||
# This feature is available in Postfix 2.7 and later.
|
||||
#
|
||||
# FILTERS WHILE DELIVERING MAIL
|
||||
# Postfix supports all four content inspection classes while
|
||||
# delivering mail via SMTP.
|
||||
#
|
||||
# smtp_header_checks (default: empty)
|
||||
#
|
||||
# smtp_mime_header_checks (default: empty)
|
||||
#
|
||||
# smtp_nested_header_checks (default: empty)
|
||||
#
|
||||
# smtp_body_checks (default: empty)
|
||||
# These features are available in Postfix 2.5 and
|
||||
# later.
|
||||
#
|
||||
# COMPATIBILITY
|
||||
# With Postfix version 2.2 and earlier specify "postmap -fq"
|
||||
# to query a table that contains case sensitive patterns. By
|
||||
# default, regexp: and pcre: patterns are case insensitive.
|
||||
#
|
||||
# TABLE FORMAT
|
||||
# This document assumes that header and body_checks rules
|
||||
# are specified in the form of Postfix regular expression
|
||||
# lookup tables. Usually the best performance is obtained
|
||||
# with pcre (Perl Compatible Regular Expression) tables. The
|
||||
# regexp (POSIX regular expressions) tables are usually
|
||||
# slower, but more widely available. Use the command "post-
|
||||
# conf -m" to find out what lookup table types your Postfix
|
||||
# system supports.
|
||||
#
|
||||
# The general format of Postfix regular expression tables is
|
||||
# given below. For a discussion of specific pattern or
|
||||
# flags syntax, see pcre_table(5) or regexp_table(5),
|
||||
# respectively.
|
||||
#
|
||||
# /pattern/flags action
|
||||
# When /pattern/ matches the input string, execute
|
||||
# the corresponding action. See below for a list of
|
||||
# possible actions.
|
||||
#
|
||||
# !/pattern/flags action
|
||||
# When /pattern/ does not match the input string,
|
||||
# execute the corresponding action.
|
||||
#
|
||||
# if /pattern/flags
|
||||
#
|
||||
# endif Match the input string against the patterns between
|
||||
# if and endif, if and only if the same input string
|
||||
# also matches /pattern/. The if..endif can nest.
|
||||
#
|
||||
# Note: do not prepend whitespace to patterns inside
|
||||
# if..endif.
|
||||
#
|
||||
# if !/pattern/flags
|
||||
#
|
||||
# endif Match the input string against the patterns between
|
||||
# if and endif, if and only if the same input string
|
||||
# does not match /pattern/. The if..endif can nest.
|
||||
#
|
||||
# blank lines and comments
|
||||
# Empty lines and whitespace-only lines are ignored,
|
||||
# as are lines whose first non-whitespace character
|
||||
# is a `#'.
|
||||
#
|
||||
# multi-line text
|
||||
# A pattern/action line starts with non-whitespace
|
||||
# text. A line that starts with whitespace continues
|
||||
# a logical line.
|
||||
#
|
||||
# TABLE SEARCH ORDER
|
||||
# For each line of message input, the patterns are applied
|
||||
# in the order as specified in the table. When a pattern is
|
||||
# found that matches the input line, the corresponding
|
||||
# action is executed and then the next input line is
|
||||
# inspected.
|
||||
#
|
||||
# TEXT SUBSTITUTION
|
||||
# Substitution of substrings from the matched expression
|
||||
# into the action string is possible using the conventional
|
||||
# Perl syntax ($1, $2, etc.). The macros in the result
|
||||
# string may need to be written as ${n} or $(n) if they
|
||||
# aren't followed by whitespace.
|
||||
#
|
||||
# Note: since negated patterns (those preceded by !) return
|
||||
# a result when the expression does not match, substitutions
|
||||
# are not available for negated patterns.
|
||||
#
|
||||
# ACTIONS
|
||||
# Action names are case insensitive. They are shown in upper
|
||||
# case for consistency with other Postfix documentation.
|
||||
#
|
||||
# DISCARD optional text...
|
||||
# Claim successful delivery and silently discard the
|
||||
# message. Log the optional text if specified, oth-
|
||||
# erwise log a generic message.
|
||||
#
|
||||
# Note: this action disables further header or
|
||||
# body_checks inspection of the current message and
|
||||
# affects all recipients. To discard only one recip-
|
||||
# ient without discarding the entire message, use the
|
||||
# transport(5) table to direct mail to the discard(8)
|
||||
# service.
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# This feature is not supported with smtp header/body
|
||||
# checks.
|
||||
#
|
||||
# DUNNO Pretend that the input line did not match any pat-
|
||||
# tern, and inspect the next input line. This action
|
||||
# can be used to shorten the table search.
|
||||
#
|
||||
# For backwards compatibility reasons, Postfix also
|
||||
# accepts OK but it is (and always has been) treated
|
||||
# as DUNNO.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# FILTER transport:destination
|
||||
# After the message is queued, send the entire mes-
|
||||
# sage through the specified external content filter.
|
||||
# The transport name specifies the first field of a
|
||||
# mail delivery agent definition in master.cf; the
|
||||
# syntax of the next-hop destination is described in
|
||||
# the manual page of the corresponding delivery
|
||||
# agent. More information about external content
|
||||
# filters is in the Postfix FILTER_README file.
|
||||
#
|
||||
# Note 1: do not use $number regular expression sub-
|
||||
# stitutions for transport or destination unless you
|
||||
# know that the information has a trusted origin.
|
||||
#
|
||||
# Note 2: this action overrides the main.cf con-
|
||||
# tent_filter setting, and affects all recipients of
|
||||
# the message. In the case that multiple FILTER
|
||||
# actions fire, only the last one is executed.
|
||||
#
|
||||
# Note 3: the purpose of the FILTER command is to
|
||||
# override message routing. To override the recipi-
|
||||
# ent's transport but not the next-hop destination,
|
||||
# specify an empty filter destination (Postfix 2.7
|
||||
# and later), or specify a transport:destination that
|
||||
# delivers through a different Postfix instance
|
||||
# (Postfix 2.6 and earlier). Other options are using
|
||||
# the recipient-dependent transport_maps or the sen-
|
||||
# der-dependent sender_dependent_default_transport-
|
||||
# _maps features.
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# This feature is not supported with smtp header/body
|
||||
# checks.
|
||||
#
|
||||
# HOLD optional text...
|
||||
# Arrange for the message to be placed on the hold
|
||||
# queue, and inspect the next input line. The mes-
|
||||
# sage remains on hold until someone either deletes
|
||||
# it or releases it for delivery. Log the optional
|
||||
# text if specified, otherwise log a generic message.
|
||||
#
|
||||
# Mail that is placed on hold can be examined with
|
||||
# the postcat(1) command, and can be destroyed or
|
||||
# released with the postsuper(1) command.
|
||||
#
|
||||
# Note: use "postsuper -r" to release mail that was
|
||||
# kept on hold for a significant fraction of $maxi-
|
||||
# mal_queue_lifetime or $bounce_queue_lifetime, or
|
||||
# longer. Use "postsuper -H" only for mail that will
|
||||
# not expire within a few delivery attempts.
|
||||
#
|
||||
# Note: this action affects all recipients of the
|
||||
# message.
|
||||
#
|
||||
# This feature is available in Postfix 2.0 and later.
|
||||
#
|
||||
# This feature is not supported with smtp header/body
|
||||
# checks.
|
||||
#
|
||||
# IGNORE Delete the current line from the input, and inspect
|
||||
# the next input line.
|
||||
#
|
||||
# INFO optional text...
|
||||
# Log an "info:" record with the optional text... (or
|
||||
# log a generic text), and inspect the next input
|
||||
# line. This action is useful for routine logging or
|
||||
# for debugging.
|
||||
#
|
||||
# This feature is available in Postfix 2.8 and later.
|
||||
#
|
||||
# PREPEND text...
|
||||
# Prepend one line with the specified text, and
|
||||
# inspect the next input line.
|
||||
#
|
||||
# Notes:
|
||||
#
|
||||
# o The prepended text is output on a separate
|
||||
# line, immediately before the input that
|
||||
# triggered the PREPEND action.
|
||||
#
|
||||
# o The prepended text is not considered part of
|
||||
# the input stream: it is not subject to
|
||||
# header/body checks or address rewriting, and
|
||||
# it does not affect the way that Postfix adds
|
||||
# missing message headers.
|
||||
#
|
||||
# o When prepending text before a message header
|
||||
# line, the prepended text must begin with a
|
||||
# valid message header label.
|
||||
#
|
||||
# o This action cannot be used to prepend multi-
|
||||
# line text.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# This feature is not supported with mil-
|
||||
# ter_header_checks.
|
||||
#
|
||||
# REDIRECT user@domain
|
||||
# Write a message redirection request to the queue
|
||||
# file, and inspect the next input line. After the
|
||||
# message is queued, it will be sent to the specified
|
||||
# address instead of the intended recipient(s).
|
||||
#
|
||||
# Note: this action overrides the FILTER action, and
|
||||
# affects all recipients of the message. If multiple
|
||||
# REDIRECT actions fire, only the last one is exe-
|
||||
# cuted.
|
||||
#
|
||||
# This feature is available in Postfix 2.1 and later.
|
||||
#
|
||||
# This feature is not supported with smtp header/body
|
||||
# checks.
|
||||
#
|
||||
# REPLACE text...
|
||||
# Replace the current line with the specified text,
|
||||
# and inspect the next input line.
|
||||
#
|
||||
# This feature is available in Postfix 2.2 and later.
|
||||
# The description below applies to Postfix 2.2.2 and
|
||||
# later.
|
||||
#
|
||||
# Notes:
|
||||
#
|
||||
# o When replacing a message header line, the
|
||||
# replacement text must begin with a valid
|
||||
# header label.
|
||||
#
|
||||
# o The replaced text remains part of the input
|
||||
# stream. Unlike the result from the PREPEND
|
||||
# action, a replaced message header may be
|
||||
# subject to address rewriting and may affect
|
||||
# the way that Postfix adds missing message
|
||||
# headers.
|
||||
#
|
||||
# REJECT optional text...
|
||||
# Reject the entire message. Reply with optional
|
||||
# text... when the optional text is specified, other-
|
||||
# wise reply with a generic error message.
|
||||
#
|
||||
# Note: this action disables further header or
|
||||
# body_checks inspection of the current message and
|
||||
# affects all recipients.
|
||||
#
|
||||
# Postfix version 2.3 and later support enhanced sta-
|
||||
# tus codes. When no code is specified at the begin-
|
||||
# ning of optional text..., Postfix inserts a default
|
||||
# enhanced status code of "5.7.1".
|
||||
#
|
||||
# This feature is not supported with smtp header/body
|
||||
# checks.
|
||||
#
|
||||
# WARN optional text...
|
||||
# Log a "warning:" record with the optional text...
|
||||
# (or log a generic text), and inspect the next input
|
||||
# line. This action is useful for debugging and for
|
||||
# testing a pattern before applying more drastic
|
||||
# actions.
|
||||
#
|
||||
# BUGS
|
||||
# Empty lines never match, because some map types mis-behave
|
||||
# when given a zero-length search string. This limitation
|
||||
# may be removed for regular expression tables in a future
|
||||
# release.
|
||||
#
|
||||
# Many people overlook the main limitations of header and
|
||||
# body_checks rules.
|
||||
#
|
||||
# o These rules operate on one logical message header
|
||||
# or one body line at a time. A decision made for one
|
||||
# line is not carried over to the next line.
|
||||
#
|
||||
# o If text in the message body is encoded (RFC 2045)
|
||||
# then the rules need to be specified for the encoded
|
||||
# form.
|
||||
#
|
||||
# o Likewise, when message headers are encoded (RFC
|
||||
# 2047) then the rules need to be specified for the
|
||||
# encoded form.
|
||||
#
|
||||
# Message headers added by the cleanup(8) daemon itself are
|
||||
# excluded from inspection. Examples of such message headers
|
||||
# are From:, To:, Message-ID:, Date:.
|
||||
#
|
||||
# Message headers deleted by the cleanup(8) daemon will be
|
||||
# examined before they are deleted. Examples are: Bcc:, Con-
|
||||
# tent-Length:, Return-Path:.
|
||||
#
|
||||
# CONFIGURATION PARAMETERS
|
||||
# body_checks
|
||||
# Lookup tables with content filter rules for message
|
||||
# body lines. These filters see one physical line at
|
||||
# a time, in chunks of at most $line_length_limit
|
||||
# bytes.
|
||||
#
|
||||
# body_checks_size_limit
|
||||
# The amount of content per message body segment
|
||||
# (attachment) that is subjected to $body_checks fil-
|
||||
# tering.
|
||||
#
|
||||
# header_checks
|
||||
#
|
||||
# mime_header_checks (default: $header_checks)
|
||||
#
|
||||
# nested_header_checks (default: $header_checks)
|
||||
# Lookup tables with content filter rules for message
|
||||
# header lines: respectively, these are applied to
|
||||
# the initial message headers (not including MIME
|
||||
# headers), to the MIME headers anywhere in the mes-
|
||||
# sage, and to the initial headers of attached mes-
|
||||
# sages.
|
||||
#
|
||||
# Note: these filters see one logical message header
|
||||
# at a time, even when a message header spans multi-
|
||||
# ple lines. Message headers that are longer than
|
||||
# $header_size_limit characters are truncated.
|
||||
#
|
||||
# disable_mime_input_processing
|
||||
# While receiving mail, give no special treatment to
|
||||
# MIME related message headers; all text after the
|
||||
# initial message headers is considered to be part of
|
||||
# the message body. This means that header_checks is
|
||||
# applied to all the initial message headers, and
|
||||
# that body_checks is applied to the remainder of the
|
||||
# message.
|
||||
#
|
||||
# Note: when used in this manner, body_checks will
|
||||
# process a multi-line message header one line at a
|
||||
# time.
|
||||
#
|
||||
# EXAMPLES
|
||||
# Header pattern to block attachments with bad file name
|
||||
# extensions. For convenience, the PCRE /x flag is speci-
|
||||
# fied, so that there is no need to collapse the pattern
|
||||
# into a single line of text. The purpose of the
|
||||
# [[:xdigit:]] sub-expressions is to recognize Windows CLSID
|
||||
# strings.
|
||||
#
|
||||
# /etc/postfix/main.cf:
|
||||
# header_checks = pcre:/etc/postfix/header_checks.pcre
|
||||
#
|
||||
# /etc/postfix/header_checks.pcre:
|
||||
# /^Content-(Disposition|Type).*name\s*=\s*"?(.*(\.|=2E)(
|
||||
# ade|adp|asp|bas|bat|chm|cmd|com|cpl|crt|dll|exe|
|
||||
# hlp|ht[at]|
|
||||
# inf|ins|isp|jse?|lnk|md[betw]|ms[cipt]|nws|
|
||||
# \{[[:xdigit:]]{8}(?:-[[:xdigit:]]{4}){3}-[[:xdigit:]]{12}\}|
|
||||
# ops|pcd|pif|prf|reg|sc[frt]|sh[bsm]|swf|
|
||||
# vb[esx]?|vxd|ws[cfh]))(\?=)?"?\s*(;|$)/x
|
||||
# REJECT Attachment name "$2" may not end with ".$4"
|
||||
#
|
||||
# Body pattern to stop a specific HTML browser vulnerability
|
||||
# exploit.
|
||||
#
|
||||
# /etc/postfix/main.cf:
|
||||
# body_checks = regexp:/etc/postfix/body_checks
|
||||
#
|
||||
# /etc/postfix/body_checks:
|
||||
# /^<iframe src=(3D)?cid:.* height=(3D)?0 width=(3D)?0>$/
|
||||
# REJECT IFRAME vulnerability exploit
|
||||
#
|
||||
# SEE ALSO
|
||||
# cleanup(8), canonicalize and enqueue Postfix message
|
||||
# pcre_table(5), format of PCRE lookup tables
|
||||
# regexp_table(5), format of POSIX regular expression tables
|
||||
# postconf(1), Postfix configuration utility
|
||||
# postmap(1), Postfix lookup table management
|
||||
# postsuper(1), Postfix janitor
|
||||
# postcat(1), show Postfix queue file contents
|
||||
# RFC 2045, base64 and quoted-printable encoding rules
|
||||
# RFC 2047, message header encoding for non-ASCII text
|
||||
#
|
||||
# README FILES
|
||||
# Use "postconf readme_directory" or "postconf html_direc-
|
||||
# tory" to locate this information.
|
||||
# DATABASE_README, Postfix lookup table overview
|
||||
# CONTENT_INSPECTION_README, Postfix content inspection overview
|
||||
# BUILTIN_FILTER_README, Postfix built-in content inspection
|
||||
# BACKSCATTER_README, blocking returned forged mail
|
||||
#
|
||||
# LICENSE
|
||||
# The Secure Mailer license must be distributed with this
|
||||
# software.
|
||||
#
|
||||
# AUTHOR(S)
|
||||
# Wietse Venema
|
||||
# IBM T.J. Watson Research
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# HEADER_CHECKS(5)
|
||||
@@ -1,28 +0,0 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDaJHIFeHit7KHn
|
||||
i0rgT9kIueUTv0Ukud00FezacYIipCkWKDKFM+x4dVXXPJ1ey3ymFsRAs7wVFm0R
|
||||
a4GBO+vFiNx1HBRnbcZutjbJIPiC+SJONN3UOUDmRSspF1/bxKQZhk4LDmj9X52n
|
||||
le6muvcOuulqdR6wLpezD4v7lJJQQ347mxomVA+dqWBDwwv9zf/nx+q3ejux82TF
|
||||
qTUneGInN1wUIz5hUTt94JiQzOTRACLdNulyOJ/AM0GCNlZoHhkWseb67PITD4zP
|
||||
EJAHlK1nJjJMGtoXFT68Shbv5IL3bj/UbaA9P5+TOgYaXJ9SZmuk9V5oirWzaiuU
|
||||
6GgHm0uDAgMBAAECggEBANN6h6u0ClKa2K8vw+xInKCwD1wgjvi207M+Gjv/1Oie
|
||||
e1KGr8ug9fwlzI14rxwKbBJcefA8DvfmoOBFd+yA2ebL8uX5zfIjYz9LmTtNon7e
|
||||
5hopeHDY/IkAv4H7rivRrEEuihR/6NrSSnYAjbfIA+Gc5NMXLiQhV2H5jXzdoSb7
|
||||
LLbsi294f2F91anUspecM/Hk5/W4JOSllY8RtLWKTxqLN22ujnvZKFqMNB/RH3d1
|
||||
HrFc6jbn8Nb6C5B5VnSBw64RNbpZbCYntbDmb4DCp/+Z2llFNrFM1XxjaJBsrHnJ
|
||||
ZTGoVIPCo1DClP/YUEUP0RTIoM/LUJwfma2hq9MrQ3ECgYEA+pCyx+MnZPog7yLD
|
||||
paR4h4Eb37majfhILO1wJRXGnmCzkp63MOLxSEZIc/JvePlS6FYRdy/F1N6NnST2
|
||||
Z2PO6JaDWxDJOhcc8QSswQsTNkUKjdygbqw4adraltriheCy/9pI131MoMLBYPdg
|
||||
Rvnw2CrPNGwwdm3Wq64fGnL0m8sCgYEA3t+20ft4QqjMYgdNL/HHPiMpgdEIEdNN
|
||||
F+wMxhxcHKI2uR/ZMGGq7AauQcxtNfoPZbQkjKwUSnkJEf6lk5Gr6hb9bz1yviu6
|
||||
NycnxlWvXiqz+Sql2e8xqSdtsw2Vuv+vPBSiUdAz4vRO3MmL8KBfmY8WG+XP78bF
|
||||
HvXSetqwCCkCgYEA0GAhrgYErv8tAHKizlA3RElkyuvp0oNWUraresvfP7sf26FO
|
||||
q8Mv8XExs+s8NRjzj/Bz2fDKzzq9/p/MozLn0ZnKZ6NQFZU/JllC6c+yDIHiQxPl
|
||||
/+QNjkrJWodxtvClLA12Ym77mP4eH+vaD2ywlLUVWH1Y2ESEMIY/q5lKP30CgYEA
|
||||
kFO/SGvYjRJSiIjB63Je3FZY4sBCwYhcPEmYXBKxc7l4RpnhQ/t7fC03W1TOxE2S
|
||||
+wGVSaOF4FRRE14cS1viQE1zAT6Bt7UJef3ZPA7w6cItmgWMMX08Y5Ys6+64L8iz
|
||||
6exS0ThK4YXkLAY4oTK5te97GcXQyi2mKU53ZyeHJ0ECgYAtqdndLIkiirXplJ10
|
||||
9VkrDKZG/Zsqm7vQjl//ZPIDzWcwo3ehBvyt4U+mnjUt+WQ4+YpmZ8mxIv486ZsI
|
||||
2GqNZVrtKE+p2llmXYIw87/NofMB+D5AfodYzjJElO+X4YQSkCQIcZOVyL2BDBs5
|
||||
D5SV7kNMb2fRDwK1/mmYBscfEw==
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -1,66 +0,0 @@
|
||||
# Global Postfix configuration file. This file lists only a subset
|
||||
# of all parameters. For the syntax, and for a complete parameter
|
||||
# list, see the postconf(5) manual page (command: "man 5 postconf").
|
||||
#
|
||||
# For common configuration examples, see BASIC_CONFIGURATION_README
|
||||
# and STANDARD_CONFIGURATION_README. To find these documents, use
|
||||
# the command "postconf html_directory readme_directory", or go to
|
||||
# http://www.postfix.org/.
|
||||
#
|
||||
# For best results, change no more than 2-3 parameters at a time,
|
||||
# and test if Postfix still works after every change.
|
||||
|
||||
|
||||
|
||||
queue_directory = /var/spool/postfix
|
||||
command_directory = /usr/sbin
|
||||
daemon_directory = /usr/libexec/postfix
|
||||
data_directory = /var/lib/postfix
|
||||
mail_owner = postfix
|
||||
inet_protocols = all
|
||||
mydestination = localhost, localhost.localdomain, [::1]
|
||||
unknown_local_recipient_reject_code = 550
|
||||
alias_maps = hash:/etc/aliases
|
||||
alias_database = hash:/etc/aliases
|
||||
debug_peer_level = 2
|
||||
debugger_command =
|
||||
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
|
||||
ddd $daemon_directory/$process_name $process_id & sleep 5
|
||||
|
||||
sendmail_path = /usr/sbin/sendmail.postfix
|
||||
newaliases_path = /usr/bin/newaliases.postfix
|
||||
mailq_path = /usr/bin/mailq.postfix
|
||||
setgid_group = postdrop
|
||||
html_directory = no
|
||||
manpage_directory = /usr/share/man
|
||||
sample_directory = /usr/share/doc/postfix-2.10.1/samples
|
||||
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
|
||||
|
||||
|
||||
myhostname = server.example.com
|
||||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
|
||||
message_size_limit = 30720000
|
||||
virtual_alias_domains =
|
||||
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf
|
||||
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
|
||||
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
|
||||
virtual_mailbox_base = /home/vmail
|
||||
virtual_uid_maps = static:5000
|
||||
virtual_gid_maps = static:5000
|
||||
smtpd_sasl_type = dovecot
|
||||
smtpd_sasl_path = private/auth
|
||||
smtpd_sasl_auth_enable = yes
|
||||
broken_sasl_auth_clients = yes
|
||||
smtpd_sasl_authenticated_header = yes
|
||||
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
|
||||
smtpd_use_tls = yes
|
||||
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
|
||||
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
|
||||
virtual_create_maildirsize = yes
|
||||
virtual_maildir_extended = yes
|
||||
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps
|
||||
virtual_transport = dovecot
|
||||
dovecot_destination_recipient_limit = 1
|
||||
inet_interfaces = all
|
||||
smtp_tls_security_level = may
|
||||
disable_vrfy_command = yes
|
||||
@@ -1,129 +0,0 @@
|
||||
#
|
||||
# Postfix master process configuration file. For details on the format
|
||||
# of the file, see the master(5) manual page (command: "man 5 master").
|
||||
#
|
||||
# Do not forget to execute "postfix reload" after editing this file.
|
||||
#
|
||||
# ==========================================================================
|
||||
# service type private unpriv chroot wakeup maxproc command + args
|
||||
# (yes) (yes) (yes) (never) (100)
|
||||
# ==========================================================================
|
||||
smtp inet n - n - - smtpd
|
||||
#smtp inet n - n - 1 postscreen
|
||||
#smtpd pass - - n - - smtpd
|
||||
#dnsblog unix - - n - 0 dnsblog
|
||||
#tlsproxy unix - - n - 0 tlsproxy
|
||||
submission inet n - n - - smtpd
|
||||
-o syslog_name=postfix/submission
|
||||
-o smtpd_tls_security_level=encrypt
|
||||
-o smtpd_sasl_auth_enable=yes
|
||||
-o smtpd_reject_unlisted_recipient=no
|
||||
-o smtpd_client_restrictions=$mua_client_restrictions
|
||||
-o smtpd_helo_restrictions=$mua_helo_restrictions
|
||||
-o smtpd_sender_restrictions=$mua_sender_restrictions
|
||||
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
|
||||
-o milter_macro_daemon_name=ORIGINATING
|
||||
smtps inet n - n - - smtpd
|
||||
-o syslog_name=postfix/smtps
|
||||
-o smtpd_tls_wrappermode=yes
|
||||
-o smtpd_sasl_auth_enable=yes
|
||||
-o smtpd_reject_unlisted_recipient=no
|
||||
-o smtpd_client_restrictions=$mua_client_restrictions
|
||||
-o smtpd_helo_restrictions=$mua_helo_restrictions
|
||||
-o smtpd_sender_restrictions=$mua_sender_restrictions
|
||||
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
|
||||
-o milter_macro_daemon_name=ORIGINATING
|
||||
#628 inet n - n - - qmqpd
|
||||
pickup unix n - n 60 1 pickup
|
||||
cleanup unix n - n - 0 cleanup
|
||||
qmgr unix n - n 300 1 qmgr
|
||||
#qmgr unix n - n 300 1 oqmgr
|
||||
tlsmgr unix - - n 1000? 1 tlsmgr
|
||||
rewrite unix - - n - - trivial-rewrite
|
||||
bounce unix - - n - 0 bounce
|
||||
defer unix - - n - 0 bounce
|
||||
trace unix - - n - 0 bounce
|
||||
verify unix - - n - 1 verify
|
||||
flush unix n - n 1000? 0 flush
|
||||
proxymap unix - - n - - proxymap
|
||||
proxywrite unix - - n - 1 proxymap
|
||||
smtp unix - - n - - smtp
|
||||
relay unix - - n - - smtp
|
||||
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
|
||||
showq unix n - n - - showq
|
||||
error unix - - n - - error
|
||||
retry unix - - n - - error
|
||||
discard unix - - n - - discard
|
||||
local unix - n n - - local
|
||||
virtual unix - n n - - virtual
|
||||
lmtp unix - - n - - lmtp
|
||||
anvil unix - - n - 1 anvil
|
||||
scache unix - - n - 1 scache
|
||||
#
|
||||
# ====================================================================
|
||||
# Interfaces to non-Postfix software. Be sure to examine the manual
|
||||
# pages of the non-Postfix software to find out what options it wants.
|
||||
#
|
||||
# Many of the following services use the Postfix pipe(8) delivery
|
||||
# agent. See the pipe(8) man page for information about ${recipient}
|
||||
# and other message envelope options.
|
||||
# ====================================================================
|
||||
#
|
||||
# maildrop. See the Postfix MAILDROP_README file for details.
|
||||
# Also specify in main.cf: maildrop_destination_recipient_limit=1
|
||||
#
|
||||
#maildrop unix - n n - - pipe
|
||||
# flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
|
||||
#
|
||||
# Specify in cyrus.conf:
|
||||
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
|
||||
#
|
||||
# Specify in main.cf one or more of the following:
|
||||
# mailbox_transport = lmtp:inet:localhost
|
||||
# virtual_transport = lmtp:inet:localhost
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# Cyrus 2.1.5 (Amos Gouaux)
|
||||
# Also specify in main.cf: cyrus_destination_recipient_limit=1
|
||||
#
|
||||
#cyrus unix - n n - - pipe
|
||||
# user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} ${user}
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# Old example of delivery via Cyrus.
|
||||
#
|
||||
#old-cyrus unix - n n - - pipe
|
||||
# flags=R user=cyrus argv=/usr/lib/cyrus-imapd/deliver -e -m ${extension} ${user}
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# See the Postfix UUCP_README file for configuration details.
|
||||
#
|
||||
#uucp unix - n n - - pipe
|
||||
# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
|
||||
#
|
||||
# ====================================================================
|
||||
#
|
||||
# Other external delivery methods.
|
||||
#
|
||||
#ifmail unix - n n - - pipe
|
||||
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
|
||||
#
|
||||
#bsmtp unix - n n - - pipe
|
||||
# flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
|
||||
#
|
||||
#scalemail-backend unix - n n - 2 pipe
|
||||
# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
|
||||
# ${nexthop} ${user} ${extension}
|
||||
#
|
||||
#mailman unix - n n - - pipe
|
||||
# flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
|
||||
# ${nexthop} ${user}
|
||||
dovecot unix - n n - - pipe
|
||||
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
|
||||
@@ -1,5 +0,0 @@
|
||||
user = cyberpanel
|
||||
password = 1qaz@9xvps
|
||||
dbname = cyberpanel
|
||||
query = SELECT domain AS virtual FROM e_domains WHERE domain='%s'
|
||||
hosts = 127.0.0.1:3307
|
||||
@@ -1,5 +0,0 @@
|
||||
user = cyberpanel
|
||||
password = 1qaz@9xvps
|
||||
dbname = cyberpanel
|
||||
query = SELECT email FROM e_users WHERE email='%s'
|
||||
hosts = 127.0.0.1:3307
|
||||
@@ -1,5 +0,0 @@
|
||||
user = cyberpanel
|
||||
password = 1qaz@9xvps
|
||||
dbname = cyberpanel
|
||||
query = SELECT destination FROM e_forwardings WHERE source='%s'
|
||||
hosts = 127.0.0.1:3307
|
||||
@@ -1,5 +0,0 @@
|
||||
user = cyberpanel
|
||||
password = 1qaz@9xvps
|
||||
dbname = cyberpanel
|
||||
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM e_users WHERE email='%s'
|
||||
hosts = 127.0.0.1:3307
|
||||
@@ -1,171 +0,0 @@
|
||||
# RELOCATED(5) RELOCATED(5)
|
||||
#
|
||||
# NAME
|
||||
# relocated - Postfix relocated table format
|
||||
#
|
||||
# SYNOPSIS
|
||||
# postmap /etc/postfix/relocated
|
||||
#
|
||||
# DESCRIPTION
|
||||
# The optional relocated(5) table provides the information
|
||||
# that is used in "user has moved to new_location" bounce
|
||||
# messages.
|
||||
#
|
||||
# Normally, the relocated(5) table is specified as a text
|
||||
# file that serves as input to the postmap(1) command. The
|
||||
# result, an indexed file in dbm or db format, is used for
|
||||
# fast searching by the mail system. Execute the command
|
||||
# "postmap /etc/postfix/relocated" to rebuild an indexed
|
||||
# file after changing the corresponding relocated table.
|
||||
#
|
||||
# When the table is provided via other means such as NIS,
|
||||
# LDAP or SQL, the same lookups are done as for ordinary
|
||||
# indexed files.
|
||||
#
|
||||
# Alternatively, the table can be provided as a regular-
|
||||
# expression map where patterns are given as regular expres-
|
||||
# sions, or lookups can be directed to TCP-based server. In
|
||||
# those case, the lookups are done in a slightly different
|
||||
# way as described below under "REGULAR EXPRESSION TABLES"
|
||||
# or "TCP-BASED TABLES".
|
||||
#
|
||||
# Table lookups are case insensitive.
|
||||
#
|
||||
# CASE FOLDING
|
||||
# The search string is folded to lowercase before database
|
||||
# lookup. As of Postfix 2.3, the search string is not case
|
||||
# folded with database types such as regexp: or pcre: whose
|
||||
# lookup fields can match both upper and lower case.
|
||||
#
|
||||
# TABLE FORMAT
|
||||
# The input format for the postmap(1) command is as follows:
|
||||
#
|
||||
# o An entry has one of the following form:
|
||||
#
|
||||
# pattern new_location
|
||||
#
|
||||
# Where new_location specifies contact information
|
||||
# such as an email address, or perhaps a street
|
||||
# address or telephone number.
|
||||
#
|
||||
# o Empty lines and whitespace-only lines are ignored,
|
||||
# as are lines whose first non-whitespace character
|
||||
# is a `#'.
|
||||
#
|
||||
# o A logical line starts with non-whitespace text. A
|
||||
# line that starts with whitespace continues a logi-
|
||||
# cal line.
|
||||
#
|
||||
# TABLE SEARCH ORDER
|
||||
# With lookups from indexed files such as DB or DBM, or from
|
||||
# networked tables such as NIS, LDAP or SQL, patterns are
|
||||
# tried in the order as listed below:
|
||||
#
|
||||
# user@domain
|
||||
# Matches user@domain. This form has precedence over
|
||||
# all other forms.
|
||||
#
|
||||
# user Matches user@site when site is $myorigin, when site
|
||||
# is listed in $mydestination, or when site is listed
|
||||
# in $inet_interfaces or $proxy_interfaces.
|
||||
#
|
||||
# @domain
|
||||
# Matches other addresses in domain. This form has
|
||||
# the lowest precedence.
|
||||
#
|
||||
# ADDRESS EXTENSION
|
||||
# When a mail address localpart contains the optional recip-
|
||||
# ient delimiter (e.g., user+foo@domain), the lookup order
|
||||
# becomes: user+foo@domain, user@domain, user+foo, user, and
|
||||
# @domain.
|
||||
#
|
||||
# REGULAR EXPRESSION TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# the table is given in the form of regular expressions or
|
||||
# when lookups are directed to a TCP-based server. For a
|
||||
# description of regular expression lookup table syntax, see
|
||||
# regexp_table(5) or pcre_table(5). For a description of the
|
||||
# TCP client/server table lookup protocol, see tcp_table(5).
|
||||
# This feature is not available up to and including Postfix
|
||||
# version 2.4.
|
||||
#
|
||||
# Each pattern is a regular expression that is applied to
|
||||
# the entire address being looked up. Thus, user@domain mail
|
||||
# addresses are not broken up into their user and @domain
|
||||
# constituent parts, nor is user+foo broken up into user and
|
||||
# foo.
|
||||
#
|
||||
# Patterns are applied in the order as specified in the ta-
|
||||
# ble, until a pattern is found that matches the search
|
||||
# string.
|
||||
#
|
||||
# Results are the same as with indexed file lookups, with
|
||||
# the additional feature that parenthesized substrings from
|
||||
# the pattern can be interpolated as $1, $2 and so on.
|
||||
#
|
||||
# TCP-BASED TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# lookups are directed to a TCP-based server. For a descrip-
|
||||
# tion of the TCP client/server lookup protocol, see tcp_ta-
|
||||
# ble(5). This feature is not available up to and including
|
||||
# Postfix version 2.4.
|
||||
#
|
||||
# Each lookup operation uses the entire address once. Thus,
|
||||
# user@domain mail addresses are not broken up into their
|
||||
# user and @domain constituent parts, nor is user+foo broken
|
||||
# up into user and foo.
|
||||
#
|
||||
# Results are the same as with indexed file lookups.
|
||||
#
|
||||
# BUGS
|
||||
# The table format does not understand quoting conventions.
|
||||
#
|
||||
# CONFIGURATION PARAMETERS
|
||||
# The following main.cf parameters are especially relevant.
|
||||
# The text below provides only a parameter summary. See
|
||||
# postconf(5) for more details including examples.
|
||||
#
|
||||
# relocated_maps
|
||||
# List of lookup tables for relocated users or sites.
|
||||
#
|
||||
# Other parameters of interest:
|
||||
#
|
||||
# inet_interfaces
|
||||
# The network interface addresses that this system
|
||||
# receives mail on. You need to stop and start Post-
|
||||
# fix when this parameter changes.
|
||||
#
|
||||
# mydestination
|
||||
# List of domains that this mail system considers
|
||||
# local.
|
||||
#
|
||||
# myorigin
|
||||
# The domain that is appended to locally-posted mail.
|
||||
#
|
||||
# proxy_interfaces
|
||||
# Other interfaces that this machine receives mail on
|
||||
# by way of a proxy agent or network address transla-
|
||||
# tor.
|
||||
#
|
||||
# SEE ALSO
|
||||
# trivial-rewrite(8), address resolver
|
||||
# postmap(1), Postfix lookup table manager
|
||||
# postconf(5), configuration parameters
|
||||
#
|
||||
# README FILES
|
||||
# Use "postconf readme_directory" or "postconf html_direc-
|
||||
# tory" to locate this information.
|
||||
# DATABASE_README, Postfix lookup table overview
|
||||
# ADDRESS_REWRITING_README, address rewriting guide
|
||||
#
|
||||
# LICENSE
|
||||
# The Secure Mailer license must be distributed with this
|
||||
# software.
|
||||
#
|
||||
# AUTHOR(S)
|
||||
# Wietse Venema
|
||||
# IBM T.J. Watson Research
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# RELOCATED(5)
|
||||
@@ -1,294 +0,0 @@
|
||||
# TRANSPORT(5) TRANSPORT(5)
|
||||
#
|
||||
# NAME
|
||||
# transport - Postfix transport table format
|
||||
#
|
||||
# SYNOPSIS
|
||||
# postmap /etc/postfix/transport
|
||||
#
|
||||
# postmap -q "string" /etc/postfix/transport
|
||||
#
|
||||
# postmap -q - /etc/postfix/transport <inputfile
|
||||
#
|
||||
# DESCRIPTION
|
||||
# The optional transport(5) table specifies a mapping from
|
||||
# email addresses to message delivery transports and next-
|
||||
# hop destinations. Message delivery transports such as
|
||||
# local or smtp are defined in the master.cf file, and next-
|
||||
# hop destinations are typically hosts or domain names. The
|
||||
# table is searched by the trivial-rewrite(8) daemon.
|
||||
#
|
||||
# This mapping overrides the default transport:nexthop
|
||||
# selection that is built into Postfix:
|
||||
#
|
||||
# local_transport (default: local:$myhostname)
|
||||
# This is the default for final delivery to domains
|
||||
# listed with mydestination, and for [ipaddress] des-
|
||||
# tinations that match $inet_interfaces or
|
||||
# $proxy_interfaces. The default nexthop destination
|
||||
# is the MTA hostname.
|
||||
#
|
||||
# virtual_transport (default: virtual:)
|
||||
# This is the default for final delivery to domains
|
||||
# listed with virtual_mailbox_domains. The default
|
||||
# nexthop destination is the recipient domain.
|
||||
#
|
||||
# relay_transport (default: relay:)
|
||||
# This is the default for remote delivery to domains
|
||||
# listed with relay_domains. In order of decreasing
|
||||
# precedence, the nexthop destination is taken from
|
||||
# relay_transport, sender_dependent_relayhost_maps,
|
||||
# relayhost, or from the recipient domain.
|
||||
#
|
||||
# default_transport (default: smtp:)
|
||||
# This is the default for remote delivery to other
|
||||
# destinations. In order of decreasing precedence,
|
||||
# the nexthop destination is taken from sender_depen-
|
||||
# dent_default_transport_maps, default_transport,
|
||||
# sender_dependent_relayhost_maps, relayhost, or from
|
||||
# the recipient domain.
|
||||
#
|
||||
# Normally, the transport(5) table is specified as a text
|
||||
# file that serves as input to the postmap(1) command. The
|
||||
# result, an indexed file in dbm or db format, is used for
|
||||
# fast searching by the mail system. Execute the command
|
||||
# "postmap /etc/postfix/transport" to rebuild an indexed
|
||||
# file after changing the corresponding transport table.
|
||||
#
|
||||
# When the table is provided via other means such as NIS,
|
||||
# LDAP or SQL, the same lookups are done as for ordinary
|
||||
# indexed files.
|
||||
#
|
||||
# Alternatively, the table can be provided as a regular-
|
||||
# expression map where patterns are given as regular expres-
|
||||
# sions, or lookups can be directed to TCP-based server. In
|
||||
# those case, the lookups are done in a slightly different
|
||||
# way as described below under "REGULAR EXPRESSION TABLES"
|
||||
# or "TCP-BASED TABLES".
|
||||
#
|
||||
# CASE FOLDING
|
||||
# The search string is folded to lowercase before database
|
||||
# lookup. As of Postfix 2.3, the search string is not case
|
||||
# folded with database types such as regexp: or pcre: whose
|
||||
# lookup fields can match both upper and lower case.
|
||||
#
|
||||
# TABLE FORMAT
|
||||
# The input format for the postmap(1) command is as follows:
|
||||
#
|
||||
# pattern result
|
||||
# When pattern matches the recipient address or
|
||||
# domain, use the corresponding result.
|
||||
#
|
||||
# blank lines and comments
|
||||
# Empty lines and whitespace-only lines are ignored,
|
||||
# as are lines whose first non-whitespace character
|
||||
# is a `#'.
|
||||
#
|
||||
# multi-line text
|
||||
# A logical line starts with non-whitespace text. A
|
||||
# line that starts with whitespace continues a logi-
|
||||
# cal line.
|
||||
#
|
||||
# The pattern specifies an email address, a domain name, or
|
||||
# a domain name hierarchy, as described in section "TABLE
|
||||
# LOOKUP".
|
||||
#
|
||||
# The result is of the form transport:nexthop and specifies
|
||||
# how or where to deliver mail. This is described in section
|
||||
# "RESULT FORMAT".
|
||||
#
|
||||
# TABLE SEARCH ORDER
|
||||
# With lookups from indexed files such as DB or DBM, or from
|
||||
# networked tables such as NIS, LDAP or SQL, patterns are
|
||||
# tried in the order as listed below:
|
||||
#
|
||||
# user+extension@domain transport:nexthop
|
||||
# Deliver mail for user+extension@domain through
|
||||
# transport to nexthop.
|
||||
#
|
||||
# user@domain transport:nexthop
|
||||
# Deliver mail for user@domain through transport to
|
||||
# nexthop.
|
||||
#
|
||||
# domain transport:nexthop
|
||||
# Deliver mail for domain through transport to nex-
|
||||
# thop.
|
||||
#
|
||||
# .domain transport:nexthop
|
||||
# Deliver mail for any subdomain of domain through
|
||||
# transport to nexthop. This applies only when the
|
||||
# string transport_maps is not listed in the par-
|
||||
# ent_domain_matches_subdomains configuration set-
|
||||
# ting. Otherwise, a domain name matches itself and
|
||||
# its subdomains.
|
||||
#
|
||||
# * transport:nexthop
|
||||
# The special pattern * represents any address (i.e.
|
||||
# it functions as the wild-card pattern, and is
|
||||
# unique to Postfix transport tables).
|
||||
#
|
||||
# Note 1: the null recipient address is looked up as
|
||||
# $empty_address_recipient@$myhostname (default: mailer-dae-
|
||||
# mon@hostname).
|
||||
#
|
||||
# Note 2: user@domain or user+extension@domain lookup is
|
||||
# available in Postfix 2.0 and later.
|
||||
#
|
||||
# RESULT FORMAT
|
||||
# The lookup result is of the form transport:nexthop. The
|
||||
# transport field specifies a mail delivery transport such
|
||||
# as smtp or local. The nexthop field specifies where and
|
||||
# how to deliver mail.
|
||||
#
|
||||
# The transport field specifies the name of a mail delivery
|
||||
# transport (the first name of a mail delivery service entry
|
||||
# in the Postfix master.cf file).
|
||||
#
|
||||
# The interpretation of the nexthop field is transport
|
||||
# dependent. In the case of SMTP, specify a service on a
|
||||
# non-default port as host:service, and disable MX (mail
|
||||
# exchanger) DNS lookups with [host] or [host]:port. The []
|
||||
# form is required when you specify an IP address instead of
|
||||
# a hostname.
|
||||
#
|
||||
# A null transport and null nexthop result means "do not
|
||||
# change": use the delivery transport and nexthop informa-
|
||||
# tion that would be used when the entire transport table
|
||||
# did not exist.
|
||||
#
|
||||
# A non-null transport field with a null nexthop field
|
||||
# resets the nexthop information to the recipient domain.
|
||||
#
|
||||
# A null transport field with non-null nexthop field does
|
||||
# not modify the transport information.
|
||||
#
|
||||
# EXAMPLES
|
||||
# In order to deliver internal mail directly, while using a
|
||||
# mail relay for all other mail, specify a null entry for
|
||||
# internal destinations (do not change the delivery trans-
|
||||
# port or the nexthop information) and specify a wildcard
|
||||
# for all other destinations.
|
||||
#
|
||||
# my.domain :
|
||||
# .my.domain :
|
||||
# * smtp:outbound-relay.my.domain
|
||||
#
|
||||
# In order to send mail for example.com and its subdomains
|
||||
# via the uucp transport to the UUCP host named example:
|
||||
#
|
||||
# example.com uucp:example
|
||||
# .example.com uucp:example
|
||||
#
|
||||
# When no nexthop host name is specified, the destination
|
||||
# domain name is used instead. For example, the following
|
||||
# directs mail for user@example.com via the slow transport
|
||||
# to a mail exchanger for example.com. The slow transport
|
||||
# could be configured to run at most one delivery process at
|
||||
# a time:
|
||||
#
|
||||
# example.com slow:
|
||||
#
|
||||
# When no transport is specified, Postfix uses the transport
|
||||
# that matches the address domain class (see DESCRIPTION
|
||||
# above). The following sends all mail for example.com and
|
||||
# its subdomains to host gateway.example.com:
|
||||
#
|
||||
# example.com :[gateway.example.com]
|
||||
# .example.com :[gateway.example.com]
|
||||
#
|
||||
# In the above example, the [] suppress MX lookups. This
|
||||
# prevents mail routing loops when your machine is primary
|
||||
# MX host for example.com.
|
||||
#
|
||||
# In the case of delivery via SMTP, one may specify host-
|
||||
# name:service instead of just a host:
|
||||
#
|
||||
# example.com smtp:bar.example:2025
|
||||
#
|
||||
# This directs mail for user@example.com to host bar.example
|
||||
# port 2025. Instead of a numerical port a symbolic name may
|
||||
# be used. Specify [] around the hostname if MX lookups must
|
||||
# be disabled.
|
||||
#
|
||||
# The error mailer can be used to bounce mail:
|
||||
#
|
||||
# .example.com error:mail for *.example.com is not deliverable
|
||||
#
|
||||
# This causes all mail for user@anything.example.com to be
|
||||
# bounced.
|
||||
#
|
||||
# REGULAR EXPRESSION TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# the table is given in the form of regular expressions. For
|
||||
# a description of regular expression lookup table syntax,
|
||||
# see regexp_table(5) or pcre_table(5).
|
||||
#
|
||||
# Each pattern is a regular expression that is applied to
|
||||
# the entire address being looked up. Thus,
|
||||
# some.domain.hierarchy is not looked up via its parent
|
||||
# domains, nor is user+foo@domain looked up as user@domain.
|
||||
#
|
||||
# Patterns are applied in the order as specified in the ta-
|
||||
# ble, until a pattern is found that matches the search
|
||||
# string.
|
||||
#
|
||||
# The trivial-rewrite(8) server disallows regular expression
|
||||
# substitution of $1 etc. in regular expression lookup
|
||||
# tables, because that could open a security hole (Postfix
|
||||
# version 2.3 and later).
|
||||
#
|
||||
# TCP-BASED TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# lookups are directed to a TCP-based server. For a descrip-
|
||||
# tion of the TCP client/server lookup protocol, see tcp_ta-
|
||||
# ble(5). This feature is not available up to and including
|
||||
# Postfix version 2.4.
|
||||
#
|
||||
# Each lookup operation uses the entire recipient address
|
||||
# once. Thus, some.domain.hierarchy is not looked up via
|
||||
# its parent domains, nor is user+foo@domain looked up as
|
||||
# user@domain.
|
||||
#
|
||||
# Results are the same as with indexed file lookups.
|
||||
#
|
||||
# CONFIGURATION PARAMETERS
|
||||
# The following main.cf parameters are especially relevant.
|
||||
# The text below provides only a parameter summary. See
|
||||
# postconf(5) for more details including examples.
|
||||
#
|
||||
# empty_address_recipient
|
||||
# The address that is looked up instead of the null
|
||||
# sender address.
|
||||
#
|
||||
# parent_domain_matches_subdomains
|
||||
# List of Postfix features that use domain.tld pat-
|
||||
# terns to match sub.domain.tld (as opposed to
|
||||
# requiring .domain.tld patterns).
|
||||
#
|
||||
# transport_maps
|
||||
# List of transport lookup tables.
|
||||
#
|
||||
# SEE ALSO
|
||||
# trivial-rewrite(8), rewrite and resolve addresses
|
||||
# master(5), master.cf file format
|
||||
# postconf(5), configuration parameters
|
||||
# postmap(1), Postfix lookup table manager
|
||||
#
|
||||
# README FILES
|
||||
# Use "postconf readme_directory" or "postconf html_direc-
|
||||
# tory" to locate this information.
|
||||
# ADDRESS_REWRITING_README, address rewriting guide
|
||||
# DATABASE_README, Postfix lookup table overview
|
||||
# FILTER_README, external content filter
|
||||
#
|
||||
# LICENSE
|
||||
# The Secure Mailer license must be distributed with this
|
||||
# software.
|
||||
#
|
||||
# AUTHOR(S)
|
||||
# Wietse Venema
|
||||
# IBM T.J. Watson Research
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# TRANSPORT(5)
|
||||
@@ -1,294 +0,0 @@
|
||||
# VIRTUAL(5) VIRTUAL(5)
|
||||
#
|
||||
# NAME
|
||||
# virtual - Postfix virtual alias table format
|
||||
#
|
||||
# SYNOPSIS
|
||||
# postmap /etc/postfix/virtual
|
||||
#
|
||||
# postmap -q "string" /etc/postfix/virtual
|
||||
#
|
||||
# postmap -q - /etc/postfix/virtual <inputfile
|
||||
#
|
||||
# DESCRIPTION
|
||||
# The optional virtual(5) alias table rewrites recipient
|
||||
# addresses for all local, all virtual, and all remote mail
|
||||
# destinations. This is unlike the aliases(5) table which
|
||||
# is used only for local(8) delivery. Virtual aliasing is
|
||||
# recursive, and is implemented by the Postfix cleanup(8)
|
||||
# daemon before mail is queued.
|
||||
#
|
||||
# The main applications of virtual aliasing are:
|
||||
#
|
||||
# o To redirect mail for one address to one or more
|
||||
# addresses.
|
||||
#
|
||||
# o To implement virtual alias domains where all
|
||||
# addresses are aliased to addresses in other
|
||||
# domains.
|
||||
#
|
||||
# Virtual alias domains are not to be confused with
|
||||
# the virtual mailbox domains that are implemented
|
||||
# with the Postfix virtual(8) mail delivery agent.
|
||||
# With virtual mailbox domains, each recipient
|
||||
# address can have its own mailbox.
|
||||
#
|
||||
# Virtual aliasing is applied only to recipient envelope
|
||||
# addresses, and does not affect message headers. Use
|
||||
# canonical(5) mapping to rewrite header and envelope
|
||||
# addresses in general.
|
||||
#
|
||||
# Normally, the virtual(5) alias table is specified as a
|
||||
# text file that serves as input to the postmap(1) command.
|
||||
# The result, an indexed file in dbm or db format, is used
|
||||
# for fast searching by the mail system. Execute the command
|
||||
# "postmap /etc/postfix/virtual" to rebuild an indexed file
|
||||
# after changing the corresponding text file.
|
||||
#
|
||||
# When the table is provided via other means such as NIS,
|
||||
# LDAP or SQL, the same lookups are done as for ordinary
|
||||
# indexed files.
|
||||
#
|
||||
# Alternatively, the table can be provided as a regular-
|
||||
# expression map where patterns are given as regular expres-
|
||||
# sions, or lookups can be directed to TCP-based server. In
|
||||
# those case, the lookups are done in a slightly different
|
||||
# way as described below under "REGULAR EXPRESSION TABLES"
|
||||
# or "TCP-BASED TABLES".
|
||||
#
|
||||
# CASE FOLDING
|
||||
# The search string is folded to lowercase before database
|
||||
# lookup. As of Postfix 2.3, the search string is not case
|
||||
# folded with database types such as regexp: or pcre: whose
|
||||
# lookup fields can match both upper and lower case.
|
||||
#
|
||||
# TABLE FORMAT
|
||||
# The input format for the postmap(1) command is as follows:
|
||||
#
|
||||
# pattern result
|
||||
# When pattern matches a mail address, replace it by
|
||||
# the corresponding result.
|
||||
#
|
||||
# blank lines and comments
|
||||
# Empty lines and whitespace-only lines are ignored,
|
||||
# as are lines whose first non-whitespace character
|
||||
# is a `#'.
|
||||
#
|
||||
# multi-line text
|
||||
# A logical line starts with non-whitespace text. A
|
||||
# line that starts with whitespace continues a logi-
|
||||
# cal line.
|
||||
#
|
||||
# TABLE SEARCH ORDER
|
||||
# With lookups from indexed files such as DB or DBM, or from
|
||||
# networked tables such as NIS, LDAP or SQL, patterns are
|
||||
# tried in the order as listed below:
|
||||
#
|
||||
# user@domain address, address, ...
|
||||
# Redirect mail for user@domain to address. This
|
||||
# form has the highest precedence.
|
||||
#
|
||||
# user address, address, ...
|
||||
# Redirect mail for user@site to address when site is
|
||||
# equal to $myorigin, when site is listed in $mydes-
|
||||
# tination, or when it is listed in $inet_interfaces
|
||||
# or $proxy_interfaces.
|
||||
#
|
||||
# This functionality overlaps with functionality of
|
||||
# the local aliases(5) database. The difference is
|
||||
# that virtual(5) mapping can be applied to non-local
|
||||
# addresses.
|
||||
#
|
||||
# @domain address, address, ...
|
||||
# Redirect mail for other users in domain to address.
|
||||
# This form has the lowest precedence.
|
||||
#
|
||||
# Note: @domain is a wild-card. With this form, the
|
||||
# Postfix SMTP server accepts mail for any recipient
|
||||
# in domain, regardless of whether that recipient
|
||||
# exists. This may turn your mail system into a
|
||||
# backscatter source: Postfix first accepts mail for
|
||||
# non-existent recipients and then tries to return
|
||||
# that mail as "undeliverable" to the often forged
|
||||
# sender address.
|
||||
#
|
||||
# RESULT ADDRESS REWRITING
|
||||
# The lookup result is subject to address rewriting:
|
||||
#
|
||||
# o When the result has the form @otherdomain, the
|
||||
# result becomes the same user in otherdomain. This
|
||||
# works only for the first address in a multi-address
|
||||
# lookup result.
|
||||
#
|
||||
# o When "append_at_myorigin=yes", append "@$myorigin"
|
||||
# to addresses without "@domain".
|
||||
#
|
||||
# o When "append_dot_mydomain=yes", append ".$mydomain"
|
||||
# to addresses without ".domain".
|
||||
#
|
||||
# ADDRESS EXTENSION
|
||||
# When a mail address localpart contains the optional recip-
|
||||
# ient delimiter (e.g., user+foo@domain), the lookup order
|
||||
# becomes: user+foo@domain, user@domain, user+foo, user, and
|
||||
# @domain.
|
||||
#
|
||||
# The propagate_unmatched_extensions parameter controls
|
||||
# whether an unmatched address extension (+foo) is propa-
|
||||
# gated to the result of table lookup.
|
||||
#
|
||||
# VIRTUAL ALIAS DOMAINS
|
||||
# Besides virtual aliases, the virtual alias table can also
|
||||
# be used to implement virtual alias domains. With a virtual
|
||||
# alias domain, all recipient addresses are aliased to
|
||||
# addresses in other domains.
|
||||
#
|
||||
# Virtual alias domains are not to be confused with the vir-
|
||||
# tual mailbox domains that are implemented with the Postfix
|
||||
# virtual(8) mail delivery agent. With virtual mailbox
|
||||
# domains, each recipient address can have its own mailbox.
|
||||
#
|
||||
# With a virtual alias domain, the virtual domain has its
|
||||
# own user name space. Local (i.e. non-virtual) usernames
|
||||
# are not visible in a virtual alias domain. In particular,
|
||||
# local aliases(5) and local mailing lists are not visible
|
||||
# as localname@virtual-alias.domain.
|
||||
#
|
||||
# Support for a virtual alias domain looks like:
|
||||
#
|
||||
# /etc/postfix/main.cf:
|
||||
# virtual_alias_maps = hash:/etc/postfix/virtual
|
||||
#
|
||||
# Note: some systems use dbm databases instead of hash. See
|
||||
# the output from "postconf -m" for available database
|
||||
# types.
|
||||
#
|
||||
# /etc/postfix/virtual:
|
||||
# virtual-alias.domain anything (right-hand content does not matter)
|
||||
# postmaster@virtual-alias.domain postmaster
|
||||
# user1@virtual-alias.domain address1
|
||||
# user2@virtual-alias.domain address2, address3
|
||||
#
|
||||
# The virtual-alias.domain anything entry is required for a
|
||||
# virtual alias domain. Without this entry, mail is rejected
|
||||
# with "relay access denied", or bounces with "mail loops
|
||||
# back to myself".
|
||||
#
|
||||
# Do not specify virtual alias domain names in the main.cf
|
||||
# mydestination or relay_domains configuration parameters.
|
||||
#
|
||||
# With a virtual alias domain, the Postfix SMTP server
|
||||
# accepts mail for known-user@virtual-alias.domain, and
|
||||
# rejects mail for unknown-user@virtual-alias.domain as
|
||||
# undeliverable.
|
||||
#
|
||||
# Instead of specifying the virtual alias domain name via
|
||||
# the virtual_alias_maps table, you may also specify it via
|
||||
# the main.cf virtual_alias_domains configuration parameter.
|
||||
# This latter parameter uses the same syntax as the main.cf
|
||||
# mydestination configuration parameter.
|
||||
#
|
||||
# REGULAR EXPRESSION TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# the table is given in the form of regular expressions. For
|
||||
# a description of regular expression lookup table syntax,
|
||||
# see regexp_table(5) or pcre_table(5).
|
||||
#
|
||||
# Each pattern is a regular expression that is applied to
|
||||
# the entire address being looked up. Thus, user@domain mail
|
||||
# addresses are not broken up into their user and @domain
|
||||
# constituent parts, nor is user+foo broken up into user and
|
||||
# foo.
|
||||
#
|
||||
# Patterns are applied in the order as specified in the ta-
|
||||
# ble, until a pattern is found that matches the search
|
||||
# string.
|
||||
#
|
||||
# Results are the same as with indexed file lookups, with
|
||||
# the additional feature that parenthesized substrings from
|
||||
# the pattern can be interpolated as $1, $2 and so on.
|
||||
#
|
||||
# TCP-BASED TABLES
|
||||
# This section describes how the table lookups change when
|
||||
# lookups are directed to a TCP-based server. For a descrip-
|
||||
# tion of the TCP client/server lookup protocol, see tcp_ta-
|
||||
# ble(5). This feature is not available up to and including
|
||||
# Postfix version 2.4.
|
||||
#
|
||||
# Each lookup operation uses the entire address once. Thus,
|
||||
# user@domain mail addresses are not broken up into their
|
||||
# user and @domain constituent parts, nor is user+foo broken
|
||||
# up into user and foo.
|
||||
#
|
||||
# Results are the same as with indexed file lookups.
|
||||
#
|
||||
# BUGS
|
||||
# The table format does not understand quoting conventions.
|
||||
#
|
||||
# CONFIGURATION PARAMETERS
|
||||
# The following main.cf parameters are especially relevant
|
||||
# to this topic. See the Postfix main.cf file for syntax
|
||||
# details and for default values. Use the "postfix reload"
|
||||
# command after a configuration change.
|
||||
#
|
||||
# virtual_alias_maps
|
||||
# List of virtual aliasing tables.
|
||||
#
|
||||
# virtual_alias_domains
|
||||
# List of virtual alias domains. This uses the same
|
||||
# syntax as the mydestination parameter.
|
||||
#
|
||||
# propagate_unmatched_extensions
|
||||
# A list of address rewriting or forwarding mecha-
|
||||
# nisms that propagate an address extension from the
|
||||
# original address to the result. Specify zero or
|
||||
# more of canonical, virtual, alias, forward,
|
||||
# include, or generic.
|
||||
#
|
||||
# Other parameters of interest:
|
||||
#
|
||||
# inet_interfaces
|
||||
# The network interface addresses that this system
|
||||
# receives mail on. You need to stop and start Post-
|
||||
# fix when this parameter changes.
|
||||
#
|
||||
# mydestination
|
||||
# List of domains that this mail system considers
|
||||
# local.
|
||||
#
|
||||
# myorigin
|
||||
# The domain that is appended to any address that
|
||||
# does not have a domain.
|
||||
#
|
||||
# owner_request_special
|
||||
# Give special treatment to owner-xxx and xxx-request
|
||||
# addresses.
|
||||
#
|
||||
# proxy_interfaces
|
||||
# Other interfaces that this machine receives mail on
|
||||
# by way of a proxy agent or network address transla-
|
||||
# tor.
|
||||
#
|
||||
# SEE ALSO
|
||||
# cleanup(8), canonicalize and enqueue mail
|
||||
# postmap(1), Postfix lookup table manager
|
||||
# postconf(5), configuration parameters
|
||||
# canonical(5), canonical address mapping
|
||||
#
|
||||
# README FILES
|
||||
# Use "postconf readme_directory" or "postconf html_direc-
|
||||
# tory" to locate this information.
|
||||
# ADDRESS_REWRITING_README, address rewriting guide
|
||||
# DATABASE_README, Postfix lookup table overview
|
||||
# VIRTUAL_README, domain hosting guide
|
||||
#
|
||||
# LICENSE
|
||||
# The Secure Mailer license must be distributed with this
|
||||
# software.
|
||||
#
|
||||
# AUTHOR(S)
|
||||
# Wietse Venema
|
||||
# IBM T.J. Watson Research
|
||||
# P.O. Box 704
|
||||
# Yorktown Heights, NY 10598, USA
|
||||
#
|
||||
# VIRTUAL(5)
|
||||
@@ -3595,7 +3595,7 @@ class Migration(migrations.Migration):
|
||||
command = "chown -R root:root /usr/local/lscp"
|
||||
preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
|
||||
command = "chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/rainloop"
|
||||
command = "chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail"
|
||||
preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
|
||||
command = "chmod 700 /usr/local/CyberCP/cli/cyberPanel.py"
|
||||
@@ -4583,15 +4583,15 @@ user_query = SELECT email as user, password, 'vmail' as uid, 'vmail' as gid, '/h
|
||||
command = "chown -R lscpd:lscpd /usr/local/CyberCP/public/snappymail/data || true"
|
||||
preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
|
||||
command = "mkdir -p /usr/local/lscp/cyberpanel/rainloop/data"
|
||||
command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data"
|
||||
preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
|
||||
### Enable sub-folders
|
||||
|
||||
command = "mkdir -p /usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/configs/"
|
||||
command = "mkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/"
|
||||
preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
|
||||
# labsPath = '/usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/configs/application.ini'
|
||||
# labsPath = '/usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/application.ini'
|
||||
#
|
||||
# labsData = """[labs]
|
||||
# imap_folder_list_limit = 0
|
||||
@@ -4612,7 +4612,7 @@ user_query = SELECT email as user, password, 'vmail' as uid, 'vmail' as gid, '/h
|
||||
# for items in data:
|
||||
# if items.find("$sCustomDataPath = '';") > -1:
|
||||
# writeToFile.writelines(
|
||||
# " $sCustomDataPath = '/usr/local/lscp/cyberpanel/rainloop/data';\n")
|
||||
# " $sCustomDataPath = '/usr/local/lscp/cyberpanel/snappymail/data';\n")
|
||||
# else:
|
||||
# writeToFile.writelines(items)
|
||||
#
|
||||
@@ -4623,7 +4623,7 @@ user_query = SELECT email as user, password, 'vmail' as uid, 'vmail' as gid, '/h
|
||||
#
|
||||
# if os.path.exists(includeFileOldPath):
|
||||
# writeToFile = open(includeFileOldPath, 'a')
|
||||
# writeToFile.write("\ndefine('APP_DATA_FOLDER_PATH', '/usr/local/lscp/cyberpanel/rainloop/data/');\n")
|
||||
# writeToFile.write("\ndefine('APP_DATA_FOLDER_PATH', '/usr/local/lscp/cyberpanel/snappymail/data/');\n")
|
||||
# writeToFile.close()
|
||||
#
|
||||
# command = 'mv %s %s' % (includeFileOldPath, includeFileNewPath)
|
||||
@@ -4635,22 +4635,22 @@ user_query = SELECT email as user, password, 'vmail' as uid, 'vmail' as gid, '/h
|
||||
#
|
||||
# ### now download and install actual plugin
|
||||
#
|
||||
# command = f'mkdir /usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/plugins/mailbox-detect'
|
||||
# command = f'mkdir /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/plugins/mailbox-detect'
|
||||
# preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
#
|
||||
# command = f'chmod 700 /usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/plugins/mailbox-detect'
|
||||
# command = f'chmod 700 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/plugins/mailbox-detect'
|
||||
# preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
#
|
||||
# command = f'chmod 700 /usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/plugins/mailbox-detect'
|
||||
# command = f'chmod 700 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/plugins/mailbox-detect'
|
||||
# preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
#
|
||||
# command = f'wget -O /usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/plugins/mailbox-detect/index.php https://raw.githubusercontent.com/the-djmaze/snappymail/master/plugins/mailbox-detect/index.php'
|
||||
# command = f'wget -O /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/plugins/mailbox-detect/index.php https://raw.githubusercontent.com/the-djmaze/snappymail/master/plugins/mailbox-detect/index.php'
|
||||
# preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
#
|
||||
# command = f'chmod 644 /usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/plugins/mailbox-detect/index.php'
|
||||
# command = f'chmod 644 /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/plugins/mailbox-detect/index.php'
|
||||
# preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
#
|
||||
# command = f'chown lscpd:lscpd /usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/plugins/mailbox-detect/index.php'
|
||||
# command = f'chown lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/plugins/mailbox-detect/index.php'
|
||||
# preFlightsChecks.call(command, self.distro, command, command, 1, 0, os.EX_OSERR)
|
||||
#
|
||||
# ### Enable plugins and enable mailbox creation plugin
|
||||
@@ -4674,7 +4674,7 @@ user_query = SELECT email as user, password, 'vmail' as uid, 'vmail' as gid, '/h
|
||||
# WriteToFile.close()
|
||||
#
|
||||
# ## enable auto create in the enabled plugin
|
||||
# PluginsFilePath = '/usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/configs/plugin-mailbox-detect.json'
|
||||
# PluginsFilePath = '/usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/plugin-mailbox-detect.json'
|
||||
#
|
||||
# WriteToFile = open(PluginsFilePath, 'w')
|
||||
# WriteToFile.write("""{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,424 +0,0 @@
|
||||
; Start a new pool named 'www'.
|
||||
; the variable $pool can we used in any directive and will be replaced by the
|
||||
; pool name ('www' here)
|
||||
[www]
|
||||
|
||||
; Per pool prefix
|
||||
; It only applies on the following directives:
|
||||
; - 'access.log'
|
||||
; - 'slowlog'
|
||||
; - 'listen' (unixsocket)
|
||||
; - 'chroot'
|
||||
; - 'chdir'
|
||||
; - 'php_values'
|
||||
; - 'php_admin_values'
|
||||
; When not set, the global prefix (or @php_fpm_prefix@) applies instead.
|
||||
; Note: This directive can also be relative to the global prefix.
|
||||
; Default Value: none
|
||||
;prefix = /path/to/pools/$pool
|
||||
|
||||
; Unix user/group of processes
|
||||
; Note: The user is mandatory. If the group is not set, the default user's group
|
||||
; will be used.
|
||||
user = nginx
|
||||
group = nginx
|
||||
|
||||
; The address on which to accept FastCGI requests.
|
||||
; Valid syntaxes are:
|
||||
; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific IPv4 address on
|
||||
; a specific port;
|
||||
; '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
|
||||
; a specific port;
|
||||
; 'port' - to listen on a TCP socket to all IPv4 addresses on a
|
||||
; specific port;
|
||||
; '[::]:port' - to listen on a TCP socket to all addresses
|
||||
; (IPv6 and IPv4-mapped) on a specific port;
|
||||
; '/path/to/unix/socket' - to listen on a unix socket.
|
||||
; Note: This value is mandatory.
|
||||
listen = 127.0.0.1:9000
|
||||
; WARNING: If you switch to a unix socket, you have to grant your webserver user
|
||||
; access to that socket by setting listen.acl_users to the webserver user.
|
||||
;
|
||||
listen = /run/php-fpm/www.sock
|
||||
|
||||
; Set listen(2) backlog.
|
||||
; Default Value: 65535 (-1 on FreeBSD and OpenBSD)
|
||||
;listen.backlog = 65535
|
||||
|
||||
; Set permissions for unix socket, if one is used. In Linux, read/write
|
||||
; permissions must be set in order to allow connections from a web server. Many
|
||||
; BSD-derived systems allow connections regardless of permissions.
|
||||
; Default Values: user and group are set as the running user
|
||||
; mode is set to 0660
|
||||
listen.owner = root
|
||||
listen.group = root
|
||||
;listen.mode = 0660
|
||||
|
||||
; When POSIX Access Control Lists are supported you can set them using
|
||||
; these options, value is a comma separated list of user/group names.
|
||||
; When set, listen.owner and listen.group are ignored
|
||||
;listen.acl_users = apache,nginx
|
||||
;listen.acl_users = apache
|
||||
;listen.acl_users = nginx
|
||||
;listen.acl_groups =
|
||||
|
||||
; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
|
||||
; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
|
||||
; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
|
||||
; must be separated by a comma. If this value is left blank, connections will be
|
||||
; accepted from any ip address.
|
||||
; Default Value: any
|
||||
listen.allowed_clients = 127.0.0.1
|
||||
|
||||
; Specify the nice(2) priority to apply to the pool processes (only if set)
|
||||
; The value can vary from -19 (highest priority) to 20 (lower priority)
|
||||
; Note: - It will only work if the FPM master process is launched as root
|
||||
; - The pool processes will inherit the master process priority
|
||||
; unless it specified otherwise
|
||||
; Default Value: no set
|
||||
; process.priority = -19
|
||||
|
||||
; Choose how the process manager will control the number of child processes.
|
||||
; Possible Values:
|
||||
; static - a fixed number (pm.max_children) of child processes;
|
||||
; dynamic - the number of child processes are set dynamically based on the
|
||||
; following directives. With this process management, there will be
|
||||
; always at least 1 children.
|
||||
; pm.max_children - the maximum number of children that can
|
||||
; be alive at the same time.
|
||||
; pm.start_servers - the number of children created on startup.
|
||||
; pm.min_spare_servers - the minimum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is less than this
|
||||
; number then some children will be created.
|
||||
; pm.max_spare_servers - the maximum number of children in 'idle'
|
||||
; state (waiting to process). If the number
|
||||
; of 'idle' processes is greater than this
|
||||
; number then some children will be killed.
|
||||
; ondemand - no children are created at startup. Children will be forked when
|
||||
; new requests will connect. The following parameter are used:
|
||||
; pm.max_children - the maximum number of children that
|
||||
; can be alive at the same time.
|
||||
; pm.process_idle_timeout - The number of seconds after which
|
||||
; an idle process will be killed.
|
||||
; Note: This value is mandatory.
|
||||
pm = dynamic
|
||||
|
||||
; The number of child processes to be created when pm is set to 'static' and the
|
||||
; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
|
||||
; This value sets the limit on the number of simultaneous requests that will be
|
||||
; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
|
||||
; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
|
||||
; CGI. The below defaults are based on a server without much resources. Don't
|
||||
; forget to tweak pm.* to fit your needs.
|
||||
; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
|
||||
; Note: This value is mandatory.
|
||||
pm.max_children = 50
|
||||
|
||||
; The number of child processes created on startup.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
|
||||
pm.start_servers = 5
|
||||
|
||||
; The desired minimum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.min_spare_servers = 5
|
||||
|
||||
; The desired maximum number of idle server processes.
|
||||
; Note: Used only when pm is set to 'dynamic'
|
||||
; Note: Mandatory when pm is set to 'dynamic'
|
||||
pm.max_spare_servers = 35
|
||||
|
||||
; The number of seconds after which an idle process will be killed.
|
||||
; Note: Used only when pm is set to 'ondemand'
|
||||
; Default Value: 10s
|
||||
;pm.process_idle_timeout = 10s;
|
||||
|
||||
; The number of requests each child process should execute before respawning.
|
||||
; This can be useful to work around memory leaks in 3rd party libraries. For
|
||||
; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
|
||||
; Default Value: 0
|
||||
;pm.max_requests = 500
|
||||
|
||||
; The URI to view the FPM status page. If this value is not set, no URI will be
|
||||
; recognized as a status page. It shows the following informations:
|
||||
; pool - the name of the pool;
|
||||
; process manager - static, dynamic or ondemand;
|
||||
; start time - the date and time FPM has started;
|
||||
; start since - number of seconds since FPM has started;
|
||||
; accepted conn - the number of request accepted by the pool;
|
||||
; listen queue - the number of request in the queue of pending
|
||||
; connections (see backlog in listen(2));
|
||||
; max listen queue - the maximum number of requests in the queue
|
||||
; of pending connections since FPM has started;
|
||||
; listen queue len - the size of the socket queue of pending connections;
|
||||
; idle processes - the number of idle processes;
|
||||
; active processes - the number of active processes;
|
||||
; total processes - the number of idle + active processes;
|
||||
; max active processes - the maximum number of active processes since FPM
|
||||
; has started;
|
||||
; max children reached - number of times, the process limit has been reached,
|
||||
; when pm tries to start more children (works only for
|
||||
; pm 'dynamic' and 'ondemand');
|
||||
; Value are updated in real time.
|
||||
; Example output:
|
||||
; pool: www
|
||||
; process manager: static
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 62636
|
||||
; accepted conn: 190460
|
||||
; listen queue: 0
|
||||
; max listen queue: 1
|
||||
; listen queue len: 42
|
||||
; idle processes: 4
|
||||
; active processes: 11
|
||||
; total processes: 15
|
||||
; max active processes: 12
|
||||
; max children reached: 0
|
||||
;
|
||||
; By default the status page output is formatted as text/plain. Passing either
|
||||
; 'html', 'xml' or 'json' in the query string will return the corresponding
|
||||
; output syntax. Example:
|
||||
; http://www.foo.bar/status
|
||||
; http://www.foo.bar/status?json
|
||||
; http://www.foo.bar/status?html
|
||||
; http://www.foo.bar/status?xml
|
||||
;
|
||||
; By default the status page only outputs short status. Passing 'full' in the
|
||||
; query string will also return status for each pool process.
|
||||
; Example:
|
||||
; http://www.foo.bar/status?full
|
||||
; http://www.foo.bar/status?json&full
|
||||
; http://www.foo.bar/status?html&full
|
||||
; http://www.foo.bar/status?xml&full
|
||||
; The Full status returns for each process:
|
||||
; pid - the PID of the process;
|
||||
; state - the state of the process (Idle, Running, ...);
|
||||
; start time - the date and time the process has started;
|
||||
; start since - the number of seconds since the process has started;
|
||||
; requests - the number of requests the process has served;
|
||||
; request duration - the duration in µs of the requests;
|
||||
; request method - the request method (GET, POST, ...);
|
||||
; request URI - the request URI with the query string;
|
||||
; content length - the content length of the request (only with POST);
|
||||
; user - the user (PHP_AUTH_USER) (or '-' if not set);
|
||||
; script - the main script called (or '-' if not set);
|
||||
; last request cpu - the %cpu the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because CPU calculation is done when the request
|
||||
; processing has terminated;
|
||||
; last request memory - the max amount of memory the last request consumed
|
||||
; it's always 0 if the process is not in Idle state
|
||||
; because memory calculation is done when the request
|
||||
; processing has terminated;
|
||||
; If the process is in Idle state, then informations are related to the
|
||||
; last request the process has served. Otherwise informations are related to
|
||||
; the current request being served.
|
||||
; Example output:
|
||||
; ************************
|
||||
; pid: 31330
|
||||
; state: Running
|
||||
; start time: 01/Jul/2011:17:53:49 +0200
|
||||
; start since: 63087
|
||||
; requests: 12808
|
||||
; request duration: 1250261
|
||||
; request method: GET
|
||||
; request URI: /test_mem.php?N=10000
|
||||
; content length: 0
|
||||
; user: -
|
||||
; script: /home/fat/web/docs/php/test_mem.php
|
||||
; last request cpu: 0.00
|
||||
; last request memory: 0
|
||||
;
|
||||
; Note: There is a real-time FPM status monitoring sample web page available
|
||||
; It's available in: @EXPANDED_DATADIR@/fpm/status.html
|
||||
;
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;pm.status_path = /status
|
||||
|
||||
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
||||
; URI will be recognized as a ping page. This could be used to test from outside
|
||||
; that FPM is alive and responding, or to
|
||||
; - create a graph of FPM availability (rrd or such);
|
||||
; - remove a server from a group if it is not responding (load balancing);
|
||||
; - trigger alerts for the operating team (24/7).
|
||||
; Note: The value must start with a leading slash (/). The value can be
|
||||
; anything, but it may not be a good idea to use the .php extension or it
|
||||
; may conflict with a real PHP file.
|
||||
; Default Value: not set
|
||||
;ping.path = /ping
|
||||
|
||||
; This directive may be used to customize the response of a ping request. The
|
||||
; response is formatted as text/plain with a 200 response code.
|
||||
; Default Value: pong
|
||||
;ping.response = pong
|
||||
|
||||
; The access log file
|
||||
; Default: not set
|
||||
;access.log = log/$pool.access.log
|
||||
|
||||
; The access log format.
|
||||
; The following syntax is allowed
|
||||
; %%: the '%' character
|
||||
; %C: %CPU used by the request
|
||||
; it can accept the following format:
|
||||
; - %{user}C for user CPU only
|
||||
; - %{system}C for system CPU only
|
||||
; - %{total}C for user + system CPU (default)
|
||||
; %d: time taken to serve the request
|
||||
; it can accept the following format:
|
||||
; - %{seconds}d (default)
|
||||
; - %{miliseconds}d
|
||||
; - %{mili}d
|
||||
; - %{microseconds}d
|
||||
; - %{micro}d
|
||||
; %e: an environment variable (same as $_ENV or $_SERVER)
|
||||
; it must be associated with embraces to specify the name of the env
|
||||
; variable. Some exemples:
|
||||
; - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
|
||||
; - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
|
||||
; %f: script filename
|
||||
; %l: content-length of the request (for POST request only)
|
||||
; %m: request method
|
||||
; %M: peak of memory allocated by PHP
|
||||
; it can accept the following format:
|
||||
; - %{bytes}M (default)
|
||||
; - %{kilobytes}M
|
||||
; - %{kilo}M
|
||||
; - %{megabytes}M
|
||||
; - %{mega}M
|
||||
; %n: pool name
|
||||
; %o: output header
|
||||
; it must be associated with embraces to specify the name of the header:
|
||||
; - %{Content-Type}o
|
||||
; - %{X-Powered-By}o
|
||||
; - %{Transfert-Encoding}o
|
||||
; - ....
|
||||
; %p: PID of the child that serviced the request
|
||||
; %P: PID of the parent of the child that serviced the request
|
||||
; %q: the query string
|
||||
; %Q: the '?' character if query string exists
|
||||
; %r: the request URI (without the query string, see %q and %Q)
|
||||
; %R: remote IP address
|
||||
; %s: status (response code)
|
||||
; %t: server time the request was received
|
||||
; it can accept a strftime(3) format:
|
||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||
; %T: time the log has been written (the request has finished)
|
||||
; it can accept a strftime(3) format:
|
||||
; %d/%b/%Y:%H:%M:%S %z (default)
|
||||
; %u: remote user
|
||||
;
|
||||
; Default: "%R - %u %t \"%m %r\" %s"
|
||||
;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
|
||||
|
||||
; The log file for slow requests
|
||||
; Default Value: not set
|
||||
; Note: slowlog is mandatory if request_slowlog_timeout is set
|
||||
slowlog = /var/log/php-fpm/www-slow.log
|
||||
|
||||
; The timeout for serving a single request after which a PHP backtrace will be
|
||||
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_slowlog_timeout = 0
|
||||
|
||||
; The timeout for serving a single request after which the worker process will
|
||||
; be killed. This option should be used when the 'max_execution_time' ini option
|
||||
; does not stop script execution for some reason. A value of '0' means 'off'.
|
||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||
; Default Value: 0
|
||||
;request_terminate_timeout = 0
|
||||
|
||||
; Set open file descriptor rlimit.
|
||||
; Default Value: system defined value
|
||||
;rlimit_files = 1024
|
||||
|
||||
; Set max core size rlimit.
|
||||
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
||||
; Default Value: system defined value
|
||||
;rlimit_core = 0
|
||||
|
||||
; Chroot to this directory at the start. This value must be defined as an
|
||||
; absolute path. When this value is not set, chroot is not used.
|
||||
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
|
||||
; of its subdirectories. If the pool prefix is not set, the global prefix
|
||||
; will be used instead.
|
||||
; Note: chrooting is a great security feature and should be used whenever
|
||||
; possible. However, all PHP paths will be relative to the chroot
|
||||
; (error_log, sessions.save_path, ...).
|
||||
; Default Value: not set
|
||||
;chroot =
|
||||
|
||||
; Chdir to this directory at the start.
|
||||
; Note: relative path can be used.
|
||||
; Default Value: current directory or / when chroot
|
||||
;chdir = /var/www
|
||||
|
||||
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
||||
; stderr will be redirected to /dev/null according to FastCGI specs.
|
||||
; Note: on highloaded environement, this can cause some delay in the page
|
||||
; process time (several ms).
|
||||
; Default Value: no
|
||||
;catch_workers_output = yes
|
||||
|
||||
; Clear environment in FPM workers
|
||||
; Prevents arbitrary environment variables from reaching FPM worker processes
|
||||
; by clearing the environment in workers before env vars specified in this
|
||||
; pool configuration are added.
|
||||
; Setting to "no" will make all environment variables available to PHP code
|
||||
; via getenv(), $_ENV and $_SERVER.
|
||||
; Default Value: yes
|
||||
;clear_env = no
|
||||
|
||||
; Limits the extensions of the main script FPM will allow to parse. This can
|
||||
; prevent configuration mistakes on the web server side. You should only limit
|
||||
; FPM to .php extensions to prevent malicious users to use other extensions to
|
||||
; exectute php code.
|
||||
; Note: set an empty value to allow all extensions.
|
||||
; Default Value: .php
|
||||
;security.limit_extensions = .php .php3 .php4 .php5
|
||||
|
||||
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
|
||||
; the current environment.
|
||||
; Default Value: clean env
|
||||
;env[HOSTNAME] = $HOSTNAME
|
||||
;env[PATH] = /usr/local/bin:/usr/bin:/bin
|
||||
;env[TMP] = /tmp
|
||||
;env[TMPDIR] = /tmp
|
||||
;env[TEMP] = /tmp
|
||||
|
||||
; Additional php.ini defines, specific to this pool of workers. These settings
|
||||
; overwrite the values previously defined in the php.ini. The directives are the
|
||||
; same as the PHP SAPI:
|
||||
; php_value/php_flag - you can set classic ini defines which can
|
||||
; be overwritten from PHP call 'ini_set'.
|
||||
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
||||
; PHP call 'ini_set'
|
||||
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
||||
|
||||
; Defining 'extension' will load the corresponding shared extension from
|
||||
; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
|
||||
; overwrite previously defined php.ini values, but will append the new value
|
||||
; instead.
|
||||
|
||||
; Note: path INI options can be relative and will be expanded with the prefix
|
||||
; (pool, global or @prefix@)
|
||||
|
||||
; Default Value: nothing is defined by default except the values in php.ini and
|
||||
; specified at startup with the -d argument
|
||||
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
|
||||
;php_flag[display_errors] = off
|
||||
php_admin_value[error_log] = /var/log/php-fpm/www-error.log
|
||||
php_admin_flag[log_errors] = on
|
||||
;php_admin_value[memory_limit] = 128M
|
||||
|
||||
; Set session path to a directory owned by process user
|
||||
php_value[session.save_handler] = files
|
||||
php_value[session.save_path] = /var/www/html
|
||||
php_value[soap.wsdl_cache_dir] = /var/lib/php-fpm/wsdlcache
|
||||
|
||||
1433
install/venvsetup.sh
1433
install/venvsetup.sh
File diff suppressed because it is too large
Load Diff
423
install/venvsetup_modules/01_vars_install_required.sh
Normal file
423
install/venvsetup_modules/01_vars_install_required.sh
Normal file
@@ -0,0 +1,423 @@
|
||||
#!/usr/bin/env bash
|
||||
# install/venvsetup part 1
|
||||
#!/bin/bash
|
||||
|
||||
#CyberPanel installer script for Ubuntu 18.04 and CentOS 7.X
|
||||
DEV="OFF"
|
||||
BRANCH="stable"
|
||||
POSTFIX_VARIABLE="ON"
|
||||
POWERDNS_VARIABLE="ON"
|
||||
PUREFTPD_VARIABLE="ON"
|
||||
PROVIDER="undefined"
|
||||
SERIAL_NO=""
|
||||
DIR=$(pwd)
|
||||
TEMP=$(curl --silent https://cyberpanel.net/version.txt)
|
||||
CP_VER1=${TEMP:12:3}
|
||||
CP_VER2=${TEMP:25:1}
|
||||
SERVER_OS="CentOS"
|
||||
VERSION="OLS"
|
||||
LICENSE_KEY=""
|
||||
KEY_SIZE=""
|
||||
ADMIN_PASS="1234567"
|
||||
MEMCACHED="ON"
|
||||
REDIS="ON"
|
||||
MARIADB_VER="11.8"
|
||||
TOTAL_RAM=$(free -m | awk '/Mem\:/ { print $2 }')
|
||||
|
||||
# Robust pip install function to handle broken pipe errors
|
||||
safe_pip_install() {
|
||||
local pip_cmd="$1"
|
||||
local requirements_file="$2"
|
||||
local install_args="$3"
|
||||
|
||||
echo "Installing Python packages..."
|
||||
|
||||
# Method 1: Install with full error suppression and broken pipe handling
|
||||
if timeout 300 $pip_cmd $install_args -r "$requirements_file" --quiet --no-warn-script-location --disable-pip-version-check 2>/dev/null || true; then
|
||||
echo "✅ Package installation completed successfully"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Method 2: Install with even more aggressive error suppression
|
||||
echo "⚠️ Trying fallback installation method..."
|
||||
if timeout 300 $pip_cmd $install_args -r "$requirements_file" --quiet --no-warn-script-location --disable-pip-version-check --no-color --no-cache-dir 2>/dev/null || true; then
|
||||
echo "✅ Package installation completed with fallback method"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Method 3: Install packages individually to avoid broken pipes
|
||||
echo "⚠️ Trying individual package installation..."
|
||||
while IFS= read -r line; do
|
||||
# Skip empty lines and comments
|
||||
[[ -z "$line" || "$line" =~ ^#.*$ ]] && continue
|
||||
|
||||
# Extract package name and version
|
||||
package=$(echo "$line" | cut -d'=' -f1 | cut -d'>' -f1 | cut -d'<' -f1 | tr -d ' ')
|
||||
|
||||
if [[ -n "$package" ]]; then
|
||||
echo "Installing $package..."
|
||||
timeout 60 $pip_cmd install $install_args "$package" --quiet --no-warn-script-location --disable-pip-version-check 2>/dev/null || true
|
||||
fi
|
||||
done < "$requirements_file"
|
||||
|
||||
echo "✅ Package installation completed with individual method"
|
||||
return 0
|
||||
}
|
||||
|
||||
license_validation() {
|
||||
CURRENT_DIR=$(pwd)
|
||||
|
||||
if [ -f /root/cyberpanel-tmp ] ; then
|
||||
rm -rf /root/cyberpanel-tmp
|
||||
fi
|
||||
|
||||
mkdir /root/cyberpanel-tmp
|
||||
cd /root/cyberpanel-tmp
|
||||
wget -q https://$DOWNLOAD_SERVER/litespeed/lsws-$LSWS_STABLE_VER-ent-x86_64-linux.tar.gz
|
||||
tar xzvf lsws-$LSWS_STABLE_VER-ent-x86_64-linux.tar.gz > /dev/null
|
||||
cd /root/cyberpanel-tmp/lsws-$LSWS_STABLE_VER/conf
|
||||
if [[ $LICENSE_KEY == "TRIAL" ]] ; then
|
||||
wget -q http://license.litespeedtech.com/reseller/trial.key
|
||||
sed -i "s|writeSerial = open('lsws-5.4.2/serial.no', 'w')|command = 'wget -q --output-document=./lsws-$LSWS_STABLE_VER/trial.key http://license.litespeedtech.com/reseller/trial.key'|g" $CURRENT_DIR/installCyberPanel.py
|
||||
sed -i 's|writeSerial.writelines(self.serial)|subprocess.call(command, shell=True)|g' $CURRENT_DIR/installCyberPanel.py
|
||||
sed -i 's|writeSerial.close()||g' $CURRENT_DIR/installCyberPanel.py
|
||||
else
|
||||
echo $LICENSE_KEY > serial.no
|
||||
fi
|
||||
|
||||
cd /root/cyberpanel-tmp/lsws-$LSWS_STABLE_VER/bin
|
||||
|
||||
if [[ $LICENSE_KEY == "TRIAL" ]] ; then
|
||||
if ./lshttpd -V |& grep "ERROR" ; then
|
||||
echo -e "\n\nIt apeears to have some issue with license , please check above result..."
|
||||
exit
|
||||
fi
|
||||
LICENSE_KEY="1111-2222-3333-4444"
|
||||
else
|
||||
if ./lshttpd -r |& grep "ERROR" ; then
|
||||
./lshttpd -r
|
||||
echo -e "\n\nIt apeears to have some issue with license , please check above result..."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
echo -e "License seems valid..."
|
||||
cd /root/cyberpanel-tmp
|
||||
rm -rf lsws-$LSWS_STABLE_VER*
|
||||
cd $CURRENT_DIR
|
||||
rm -rf /root/cyberpanel-tmp
|
||||
}
|
||||
|
||||
special_change(){
|
||||
sed -i 's|cyberpanel.sh|'$DOWNLOAD_SERVER'|g' install.py
|
||||
sed -i 's|mirror.cyberpanel.net|'$DOWNLOAD_SERVER'|g' install.py
|
||||
sed -i 's|git clone https://github.com/usmannasir/cyberpanel|echo downloaded|g' install.py
|
||||
#change to CDN first, regardless country
|
||||
sed -i 's|http://|https://|g' install.py
|
||||
|
||||
LATEST_URL="https://update.litespeedtech.com/ws/latest.php"
|
||||
#LATEST_URL="https://cyberpanel.sh/latest.php"
|
||||
curl --silent -o /tmp/lsws_latest $LATEST_URL 2>/dev/null
|
||||
LSWS_STABLE_LINE=`cat /tmp/lsws_latest | grep LSWS_STABLE`
|
||||
LSWS_STABLE_VER=`expr "$LSWS_STABLE_LINE" : '.*LSWS_STABLE=\(.*\) BUILD .*'`
|
||||
# Fallback to LSWS 6.3.4 (Stable) if fetch failed or empty
|
||||
if [ -z "$LSWS_STABLE_VER" ]; then
|
||||
LSWS_STABLE_VER="6.3.4"
|
||||
fi
|
||||
|
||||
if [[ $SERVER_COUNTRY == "CN" ]] ; then
|
||||
#line1="$(grep -n "github.com/usmannasir/cyberpanel" install.py | head -n 1 | cut -d: -f1)"
|
||||
#line2=$((line1 - 1))
|
||||
#sed -i "${line2}i\ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" install.py
|
||||
#sed -i "${line2}i\ \ \ \ \ \ \ \ command = 'tar xzvf cyberpanel-git.tar.gz'" install.py
|
||||
#sed -i "${line2}i\ \ \ \ \ \ \ \ subprocess.call(command, shell=True)" install.py
|
||||
#sed -i "${line2}i\ \ \ \ \ \ \ \ command = 'wget cyberpanel.sh/cyberpanel-git.tar.gz'" install.py
|
||||
sed -i 's|wget https://rpms.litespeedtech.com/debian/|wget --no-check-certificate https://rpms.litespeedtech.com/debian/|g' install.py
|
||||
sed -i 's|https://repo.powerdns.com/repo-files/centos-auth-42.repo|https://'$DOWNLOAD_SERVER'/powerdns/powerdns.repo|g' installCyberPanel.py
|
||||
sed -i 's|https://snappymail.eu/repository/latest.tar.gz|https://'$DOWNLOAD_SERVER'/repository/latest.tar.gz|g' install.py
|
||||
|
||||
sed -i 's|rpm -ivh https://rpms.litespeedtech.com/centos/litespeed-repo-1.1-1.el7.noarch.rpm|curl -o /etc/yum.repos.d/litespeed.repo https://'$DOWNLOAD_SERVER'/litespeed/litespeed.repo|g' install.py
|
||||
|
||||
|
||||
sed -i 's|https://copr.fedorainfracloud.org/coprs/copart/restic/repo/epel-7/copart-restic-epel-7.repo|https://'$DOWNLOAD_SERVER'/restic/restic.repo|g' install.py
|
||||
|
||||
sed -i 's|yum -y install https://cyberpanel.sh/gf-release-latest.gf.el7.noarch.rpm|wget -O /etc/yum.repos.d/gf.repo https://'$DOWNLOAD_SERVER'/gf-plus/gf.repo|g' install.py
|
||||
sed -i 's|dovecot-2.3-latest|dovecot-2.3-latest-mirror|g' install.py
|
||||
sed -i 's|git clone https://github.com/usmannasir/cyberpanel|wget https://cyberpanel.sh/cyberpanel-git.tar.gz \&\& tar xzvf cyberpanel-git.tar.gz|g' install.py
|
||||
sed -i 's|https://repo.dovecot.org/ce-2.3-latest/centos/$releasever/RPMS/$basearch|https://'$DOWNLOAD_SERVER'/dovecot/|g' install.py
|
||||
sed -i 's|'$DOWNLOAD_SERVER'|cyberpanel.sh|g' install.py
|
||||
sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.4.2-ent-x86_64-linux.tar.gz|https://'$DOWNLOAD_SERVER'/litespeed/lsws-'$LSWS_STABLE_VER'-ent-x86_64-linux.tar.gz|g' installCyberPanel.py
|
||||
# global change for CN , regardless provider and system
|
||||
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
DIR=$(pwd)
|
||||
cd $DIR/mysql
|
||||
echo "[mariadb-tsinghua]
|
||||
name = MariaDB
|
||||
baseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.1/centos7-amd64
|
||||
gpgkey = https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum//RPM-GPG-KEY-MariaDB
|
||||
gpgcheck = 1" > MariaDB.repo
|
||||
#above to set mariadb db to Tsinghua repo
|
||||
cd $DIR
|
||||
sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|g' installCyberPanel.py
|
||||
mkdir /root/.pip
|
||||
cat << EOF > /root/.pip/pip.conf
|
||||
[global]
|
||||
index-url = https://mirrors.aliyun.com/pypi/simple/
|
||||
EOF
|
||||
echo -e "\nSet to Aliyun pip repo..."
|
||||
cat << EOF > composer.sh
|
||||
#!/usr/bin/env bash
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
php composer-setup.php
|
||||
php -r "unlink('composer-setup.php');"
|
||||
mv composer.phar /usr/bin/composer
|
||||
|
||||
if [ ! -d /root/.config ]; then
|
||||
mkdir /root/.config
|
||||
fi
|
||||
|
||||
if [ ! -d /root/.config/composer ]; then
|
||||
mkdir /root/.config/composer
|
||||
fi
|
||||
|
||||
echo '{
|
||||
"bitbucket-oauth": {},
|
||||
"github-oauth": {},
|
||||
"gitlab-oauth": {},
|
||||
"gitlab-token": {},
|
||||
"http-basic": {}
|
||||
}
|
||||
' > /root/.config/composer/auth.json
|
||||
|
||||
echo '{
|
||||
"config": {},
|
||||
"repositories": {
|
||||
"packagist": {
|
||||
"type": "composer",
|
||||
"url": "https://mirrors.aliyun.com/composer/"
|
||||
}
|
||||
}
|
||||
}
|
||||
' > /root/.config/composer/config.json
|
||||
composer clear-cache
|
||||
EOF
|
||||
fi
|
||||
|
||||
|
||||
if [[ $SERVER_OS == "Ubuntu" ]] ; then
|
||||
echo $'\n89.208.248.38 rpms.litespeedtech.com\n' >> /etc/hosts
|
||||
echo -e "Mirror server set..."
|
||||
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
|
||||
cat << EOF > /root/.pip/pip.conf
|
||||
[global]
|
||||
index-url = https://mirrors.aliyun.com/pypi/simple/
|
||||
EOF
|
||||
echo -e "\nSet to Aliyun pip repo..."
|
||||
if [[ $PROVIDER == "Tencent Cloud" ]] ; then
|
||||
#tencent cloud and ubuntu system
|
||||
echo -e "\n Tencent Cloud detected ... bypass default repository"
|
||||
cp /etc/apt/sources.list /etc/apt/sources.list-backup
|
||||
#backup original sources list
|
||||
cat << 'EOF' > /etc/apt/sources.list
|
||||
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
|
||||
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
|
||||
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
|
||||
EOF
|
||||
DEBIAN_FRONTEND=noninteractive apt update -y
|
||||
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
|
||||
cat << EOF > composer.sh
|
||||
#!/usr/bin/env bash
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
php composer-setup.php
|
||||
php -r "unlink('composer-setup.php');"
|
||||
mv composer.phar /usr/bin/composer
|
||||
|
||||
if [ ! -d /root/.config ]; then
|
||||
mkdir /root/.config
|
||||
fi
|
||||
|
||||
if [ ! -d /root/.config/composer ]; then
|
||||
mkdir /root/.config/composer
|
||||
fi
|
||||
|
||||
echo '{
|
||||
"bitbucket-oauth": {},
|
||||
"github-oauth": {},
|
||||
"gitlab-oauth": {},
|
||||
"gitlab-token": {},
|
||||
"http-basic": {}
|
||||
}
|
||||
' > /root/.config/composer/auth.json
|
||||
|
||||
echo '{
|
||||
"config": {},
|
||||
"repositories": {
|
||||
"packagist": {
|
||||
"type": "composer",
|
||||
"url": "https://mirrors.cloud.tencent.com/composer/"
|
||||
}
|
||||
}
|
||||
}
|
||||
' > /root/.config/composer/config.json
|
||||
composer clear-cache
|
||||
EOF
|
||||
else
|
||||
cat << EOF > composer.sh
|
||||
#!/usr/bin/env bash
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
php composer-setup.php
|
||||
php -r "unlink('composer-setup.php');"
|
||||
mv composer.phar /usr/bin/composer
|
||||
|
||||
if [ ! -d /root/.config ]; then
|
||||
mkdir /root/.config
|
||||
fi
|
||||
|
||||
if [ ! -d /root/.config/composer ]; then
|
||||
mkdir /root/.config/composer
|
||||
fi
|
||||
|
||||
echo '{
|
||||
"bitbucket-oauth": {},
|
||||
"github-oauth": {},
|
||||
"gitlab-oauth": {},
|
||||
"gitlab-token": {},
|
||||
"http-basic": {}
|
||||
}
|
||||
' > /root/.config/composer/auth.json
|
||||
|
||||
echo '{
|
||||
"config": {},
|
||||
"repositories": {
|
||||
"packagist": {
|
||||
"type": "composer",
|
||||
"url": "https://packagist.phpcomposer.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
' > /root/.config/composer/config.json
|
||||
composer clear-cache
|
||||
EOF
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
system_tweak() {
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
setenforce 0
|
||||
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
|
||||
fi
|
||||
|
||||
if ! grep -q "pid_max" /etc/rc.local; then
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
echo "echo 1000000 > /proc/sys/kernel/pid_max
|
||||
echo 1 > /sys/kernel/mm/ksm/run" >> /etc/rc.d/rc.local
|
||||
chmod +x /etc/rc.d/rc.local
|
||||
else
|
||||
echo "echo 1000000 > /proc/sys/kernel/pid_max
|
||||
echo 1 > /sys/kernel/mm/ksm/run" >> /etc/rc.local
|
||||
chmod +x /etc/rc.local
|
||||
fi
|
||||
echo "fs.file-max = 65535" >> /etc/sysctl.conf
|
||||
sysctl -p > /dev/null
|
||||
echo "* soft nofile 65535
|
||||
* hard nofile 65535
|
||||
root soft nofile 65535
|
||||
root hard nofile 65535
|
||||
* soft nproc 65535
|
||||
* hard nproc 65535
|
||||
root soft nproc 65535
|
||||
root hard nproc 65535" >> /etc/security/limits.conf
|
||||
fi
|
||||
|
||||
#sed -i 's|#DefaultLimitNOFILE=|DefaultLimitNOFILE=65535|g' /etc/systemd/system.conf
|
||||
|
||||
|
||||
TOTAL_SWAP=$(free -m | awk '/^Swap:/ { print $2 }')
|
||||
SET_SWAP=$((TOTAL_RAM - TOTAL_SWAP))
|
||||
SWAP_FILE=/cyberpanel.swap
|
||||
|
||||
if [ ! -f $SWAP_FILE ] ; then
|
||||
if [[ $TOTAL_SWAP -gt $TOTAL_RAM ]] || [[ $TOTAL_SWAP -eq $TOTAL_RAM ]] ; then
|
||||
echo "SWAP check..."
|
||||
else
|
||||
if [[ $SET_SWAP -gt "2049" ]] ; then
|
||||
SET_SWAP="2048"
|
||||
else
|
||||
echo "Checking SWAP..."
|
||||
fi
|
||||
fallocate --length ${SET_SWAP}MiB $SWAP_FILE
|
||||
chmod 600 $SWAP_FILE
|
||||
mkswap $SWAP_FILE
|
||||
swapon $SWAP_FILE
|
||||
echo "${SWAP_FILE} swap swap sw 0 0" | sudo tee -a /etc/fstab
|
||||
sysctl vm.swappiness=10
|
||||
echo "vm.swappiness = 10" >> /etc/sysctl.conf
|
||||
echo "SWAP set..."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
install_required() {
|
||||
echo -e "\nInstalling necessary components..."
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
rpm --import https://$DOWNLOAD_SERVER/mariadb/RPM-GPG-KEY-MariaDB
|
||||
rpm --import https://$DOWNLOAD_SERVER/litespeed/RPM-GPG-KEY-litespeed
|
||||
rpm --import https://$DOWNLOAD_SERVER/powerdns/FD380FBB-pub.asc
|
||||
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
|
||||
rpm --import https://$DOWNLOAD_SERVER/gf-plus/RPM-GPG-KEY-gf.el7
|
||||
rpm --import https://repo.dovecot.org/DOVECOT-REPO-GPG
|
||||
rpm --import https://copr-be.cloud.fedoraproject.org/results/copart/restic/pubkey.gpg
|
||||
yum autoremove epel-release -y
|
||||
rm -f /etc/yum.repos.d/epel.repo
|
||||
rm -f /etc/yum.repos.d/epel.repo.rpmsave
|
||||
yum clean all
|
||||
yum update -y
|
||||
yum install epel-release -y
|
||||
yum install -y wget strace htop net-tools telnet curl which bc telnet htop libevent-devel gcc python-devel libattr-devel xz-devel gpgme-devel mariadb-devel curl-devel python-pip git
|
||||
if [[ $DEV == "ON" ]] ; then
|
||||
yum -y install yum-utils
|
||||
yum -y groupinstall development
|
||||
yum -y install https://centos7.iuscommunity.org/ius-release.rpm
|
||||
yum -y install python36u python36u-pip python36u-devel
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $SERVER_OS == "Ubuntu" ]] ; then
|
||||
apt update -y
|
||||
DEBIAN_FRONTEND=noninteractive apt upgrade -y
|
||||
|
||||
# Check if this is Debian (no lsb-release) and version >= 13
|
||||
if [[ ! -f /etc/lsb-release ]] && [[ -f /etc/debian_version ]]; then
|
||||
DEBIAN_VERSION=$(cat /etc/debian_version | cut -d'.' -f1)
|
||||
if [[ $DEBIAN_VERSION -ge 13 ]]; then
|
||||
# Debian 13 (Trixie) package mappings
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y htop telnet python3-mysqldb python3-dev libcurl4-gnutls-dev libgnutls28-dev libgcrypt20-dev libattr1 libattr1-dev liblzma-dev libgpgme-dev libmariadb-dev-compat libmariadb-dev libcurl4-gnutls-dev libssl-dev nghttp2 libnghttp2-dev idn2 libidn2-dev librtmp-dev libpsl-dev nettle-dev libgnutls28-dev libldap2-dev libgssapi-krb5-2 libk5crypto3 libkrb5-dev libcom-err2 libldap2-dev python3-gpg python3 python3-setuptools virtualenv python3-dev python3-pip git
|
||||
elif [[ $DEBIAN_VERSION -ge 12 ]]; then
|
||||
# Debian 12 (Bookworm) package mappings
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y htop telnet python3-mysqldb python3-dev libcurl4-gnutls-dev libgnutls28-dev libgcrypt20-dev libattr1 libattr1-dev liblzma-dev libgpgme-dev libmariadb-dev libcurl4-gnutls-dev libssl-dev nghttp2 libnghttp2-dev idn2 libidn2-dev librtmp-dev libpsl-dev nettle-dev libgnutls28-dev libldap2-dev libgssapi-krb5-2 libk5crypto3 libkrb5-dev libcom-err2 libldap2-dev python3-gpg python3 python3-setuptools virtualenv python3-dev python3-pip git
|
||||
else
|
||||
# Older Debian versions
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y htop telnet python-mysqldb python-dev libcurl4-gnutls-dev libgnutls28-dev libgcrypt20-dev libattr1 libattr1-dev liblzma-dev libgpgme-dev libmariadb-dev-compat libmariadb-dev libcurl4-gnutls-dev libssl-dev nghttp2 libnghttp2-dev idn2 libidn2-dev librtmp-dev libpsl-dev nettle-dev libgnutls28-dev libldap2-dev libgssapi-krb5-2 libk5crypto3 libkrb5-dev libcom-err2 libldap2-dev python-gpg python python-minimal python-setuptools virtualenv python-dev python-pip git
|
||||
fi
|
||||
else
|
||||
# Ubuntu or older Debian with compatible package names
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y htop telnet python-mysqldb python-dev libcurl4-gnutls-dev libgnutls28-dev libgcrypt20-dev libattr1 libattr1-dev liblzma-dev libgpgme-dev libmariadb-dev-compat libmariadb-dev libcurl4-gnutls-dev libssl-dev nghttp2 libnghttp2-dev idn2 libidn2-dev librtmp-dev libpsl-dev nettle-dev libgnutls28-dev libldap2-dev libgssapi-krb5-2 libk5crypto3 libkrb5-dev libcom-err2 libldap2-dev python-gpg python python-minimal python-setuptools virtualenv python-dev python-pip git
|
||||
fi
|
||||
if [[ $DEV == "ON" ]] ; then
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y python3-pip
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y build-essential libssl-dev libffi-dev python3-dev
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y python3-venv
|
||||
fi
|
||||
fi
|
||||
}
|
||||
499
install/venvsetup_modules/02_memcached_main.sh
Normal file
499
install/venvsetup_modules/02_memcached_main.sh
Normal file
@@ -0,0 +1,499 @@
|
||||
#!/usr/bin/env bash
|
||||
# install/venvsetup part 2 – memcached through main_install
|
||||
|
||||
memcached_installation() {
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
yum install -y lsphp73-memcached lsphp72-memcached lsphp71-memcached lsphp70-memcached lsphp56-pecl-memcached lsphp55-pecl-memcached lsphp54-pecl-memcached
|
||||
if [[ $TOTAL_RAM -eq "2048" ]] || [[ $TOTAL_RAM -gt "2048" ]] ; then
|
||||
yum groupinstall "Development Tools" -y
|
||||
yum install autoconf automake zlib-devel openssl-devel expat-devel pcre-devel libmemcached-devel cyrus-sasl* -y
|
||||
wget https://$DOWNLOAD_SERVER/litespeed/lsmcd.tar.gz
|
||||
tar xzvf lsmcd.tar.gz
|
||||
DIR=$(pwd)
|
||||
cd $DIR/lsmcd
|
||||
./fixtimestamp.sh
|
||||
./configure CFLAGS=" -O3" CXXFLAGS=" -O3"
|
||||
make
|
||||
make install
|
||||
systemctl enable lsmcd
|
||||
systemctl start lsmcd
|
||||
cd $DIR
|
||||
else
|
||||
yum install -y memcached
|
||||
sed -i 's|OPTIONS=""|OPTIONS="-l 127.0.0.1 -U 0"|g' /etc/sysconfig/memcached
|
||||
systemctl enable memcached
|
||||
systemctl start memcached
|
||||
fi
|
||||
fi
|
||||
if [[ $SERVER_OS == "Ubuntu" ]] ; then
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y lsphp73-memcached lsphp72-memcached lsphp71-memcached lsphp70-memcached
|
||||
if [[ $TOTAL_RAM -eq "2048" ]] || [[ $TOTAL_RAM -gt "2048" ]] ; then
|
||||
DEBIAN_FRONTEND=noninteractive apt install build-essential zlib1g-dev libexpat1-dev openssl libssl-dev libsasl2-dev libpcre3-dev git -y
|
||||
wget https://$DOWNLOAD/litespeed/lsmcd.tar.gz
|
||||
tar xzvf lsmcd.tar.gz
|
||||
DIR=$(pwd)
|
||||
cd $DIR/lsmcd
|
||||
./fixtimestamp.sh
|
||||
./configure CFLAGS=" -O3" CXXFLAGS=" -O3"
|
||||
make
|
||||
make install
|
||||
cd $DIR
|
||||
systemctl enable lsmcd
|
||||
systemctl start lsmcd
|
||||
else
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y memcached
|
||||
systemctl enable memcached
|
||||
systemctl start memcached
|
||||
fi
|
||||
fi
|
||||
|
||||
if ps -aux | grep "lsmcd" | grep -v grep ; then
|
||||
echo -e "\n\nLiteSpeed Memcached installed and running..."
|
||||
fi
|
||||
|
||||
if ps -aux | grep "memcached" | grep -v grep ; then
|
||||
echo -e "\n\nMemcached installed and running..."
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
redis_installation() {
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
yum install -y lsphp73-redis lsphp72-redis lsphp71-redis lsphp70-redis lsphp56-redis lsphp55-redis lsphp54-redis redis
|
||||
fi
|
||||
if [[ $SERVER_OS == "Ubuntu" ]] ; then
|
||||
DEBIAN_FRONTEND=noninteractive apt install -y lsphp73-redis lsphp72-redis lsphp71-redis lsphp70-redis redis
|
||||
fi
|
||||
|
||||
if ifconfig -a | grep inet6 ; then
|
||||
echo -e "\n IPv6 detected..."
|
||||
else
|
||||
sed -i 's|bind 127.0.0.1 ::1|bind 127.0.0.1|g' /etc/redis/redis.conf
|
||||
echo -e "\n no IPv6 detected..."
|
||||
fi
|
||||
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
systemctl enable redis
|
||||
systemctl start redis
|
||||
fi
|
||||
|
||||
if [[ $SERVER_OS == "Ubuntu" ]] ; then
|
||||
systemctl enable redis-server
|
||||
systemctl start redis-server
|
||||
fi
|
||||
|
||||
if ps -aux | grep "redis" | grep -v grep ; then
|
||||
echo -e "\n\nRedis installed and running..."
|
||||
fi
|
||||
}
|
||||
|
||||
check_provider() {
|
||||
|
||||
if hash dmidecode > /dev/null 2>&1 ; then
|
||||
if [ "$(dmidecode -s bios-vendor)" = 'Google' ] ; then
|
||||
PROVIDER='Google Cloud Platform'
|
||||
elif [ "$(dmidecode -s bios-vendor)" = 'DigitalOcean' ] ; then
|
||||
PROVIDER='Digital Ocean'
|
||||
elif [ "$(dmidecode -s system-product-name | cut -c 1-7)" = 'Alibaba' ] ; then
|
||||
PROVIDER='Alibaba Cloud'
|
||||
elif [ "$(dmidecode -s system-manufacturer)" = 'Microsoft Corporation' ] ; then
|
||||
PROVIDER='Microsoft Azure'
|
||||
elif [ -d /usr/local/qcloud ] ; then
|
||||
PROVIDER='Tencent Cloud'
|
||||
else
|
||||
PROVIDER='undefined'
|
||||
fi
|
||||
else
|
||||
PROVIDER='undefined'
|
||||
fi
|
||||
|
||||
if [ "$(cat /sys/devices/virtual/dmi/id/product_uuid | cut -c 1-3)" = 'EC2' ] && [ -d /home/ubuntu ]; then
|
||||
PROVIDER='Amazon Web Service'
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
|
||||
check_OS() {
|
||||
echo -e "\nChecking OS..."
|
||||
OUTPUT=$(cat /etc/*release)
|
||||
if echo $OUTPUT | grep -q "CentOS Linux 7" ; then
|
||||
echo -e "\nDetecting CentOS 7.X...\n"
|
||||
SERVER_OS="CentOS"
|
||||
elif echo $OUTPUT | grep -q "CloudLinux 7" ; then
|
||||
echo -e "\nDetecting CloudLinux 7.X...\n"
|
||||
SERVER_OS="CentOS"
|
||||
elif echo $OUTPUT | grep -q "Ubuntu 18.04" ; then
|
||||
echo -e "\nDetecting Ubuntu 18.04...\n"
|
||||
SERVER_OS="Ubuntu"
|
||||
else
|
||||
cat /etc/*release
|
||||
echo -e "\nUnable to detect your OS...\n"
|
||||
echo -e "\nCyberPanel is supported on Ubuntu 18.04, CentOS 7.x and CloudLinux 7.x...\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_root() {
|
||||
echo -e "Checking root privileges...\n"
|
||||
if [[ $(id -u) != 0 ]] > /dev/null; then
|
||||
echo -e "You must use root account to do this"
|
||||
echo -e "or run following command: (do NOT miss the quotes)"
|
||||
echo -e "\e[31msudo su -c \"sh <(curl https://cyberpanel.sh || wget -O - https://cyberpanel.sh)\"\e[39m"
|
||||
exit 1
|
||||
else
|
||||
echo -e "You are runing as root...\n"
|
||||
fi
|
||||
}
|
||||
|
||||
check_panel() {
|
||||
if [ -d /usr/local/cpanel ]; then
|
||||
echo -e "\ncPanel detected...exit...\n"
|
||||
exit 1
|
||||
fi
|
||||
if [ -d /opt/plesk ]; then
|
||||
echo -e "\nPlesk detected...exit...\n"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_process() {
|
||||
if systemctl is-active --quiet httpd; then
|
||||
systemctl disable httpd
|
||||
systemctl stop httpd
|
||||
echo -e "\nhttpd process detected, disabling...\n"
|
||||
fi
|
||||
if systemctl is-active --quiet apache2; then
|
||||
systemctl disable apache2
|
||||
systemctl stop apache2
|
||||
echo -e "\napache2 process detected, disabling...\n"
|
||||
fi
|
||||
if systemctl is-active --quiet named; then
|
||||
systemctl stop named
|
||||
systemctl disable named
|
||||
echo -e "\nnamed process detected, disabling...\n"
|
||||
fi
|
||||
if systemctl is-active --quiet exim; then
|
||||
systemctl stop exim
|
||||
systemctl disable exim
|
||||
echo -e "\nexim process detected, disabling...\n"
|
||||
fi
|
||||
}
|
||||
|
||||
show_help() {
|
||||
echo -e "\nCyberPanel Installer Script Help\n"
|
||||
echo -e "\nUsage: wget https://cyberpanel.sh/cyberpanel.sh"
|
||||
echo -e "\nchmod +x cyberpanel.sh"
|
||||
echo -e "\n./cyberpanel.sh -v ols/SERIAL_NUMBER -c 1 -a 1"
|
||||
echo -e "\n -v or --version: choose to install CyberPanel OpenLiteSpeed or CyberPanel Enterprise, available options are \e[31mols\e[39m and \e[31mSERIAL_NUMBER\e[39m, default ols"
|
||||
echo -e "\n Please be aware, this serial number must be obtained from LiteSpeed Store."
|
||||
echo -e "\n And if this serial number has been used before, it must be released/migrated in Store first, otherwise it will fail to start."
|
||||
echo -e "\n -a or --addons: install addons: memcached, redis, PHP extension for memcached and redis, 1 for install addons, 0 for not to install, default 0, only applicable for CentOS system."
|
||||
echo -e "\n -p or --password: set password of new installation, empty for default 1234567, [r] or [random] for randomly generated 16 digital password, any other value besdies [d] and [r(andom)] will be accept as password, default use 1234567."
|
||||
#echo -e "\n -m: set to minimal mode which will not install PowerDNS, Pure-FTPd and Postfix"
|
||||
echo -e "\n Example:"
|
||||
echo -e "\n ./cyberpanel.sh -v ols -p r or ./cyberpanel.sh --version ols --password random"
|
||||
echo -e "\n This will install CyberPanel OpenLiteSpeed and randomly generate the password."
|
||||
echo -e "\n ./cyberpanel.sh default"
|
||||
echo -e "\n This will install everything default , which is OpenLiteSpeed and nothing more.\n"
|
||||
|
||||
}
|
||||
|
||||
license_input() {
|
||||
VERSION="ENT"
|
||||
echo -e "\nPlease note that your server has \e[31m$TOTAL_RAM\e[39m RAM"
|
||||
echo -e "If you are using \e[31mFree Start\e[39m license, It will not start due to \e[31m2GB RAM limit\e[39m.\n"
|
||||
echo -e "If you do not have any license, you can also use trial license (if server has not used trial license before), type \e[31mTRIAL\e[39m\n"
|
||||
|
||||
printf "%s" "Please input your serial number for LiteSpeed WebServer Enterprise:"
|
||||
read LICENSE_KEY
|
||||
if [ -z "$LICENSE_KEY" ] ; then
|
||||
echo -e "\nPlease provide license key\n"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo -e "The serial number you input is: \e[31m$LICENSE_KEY\e[39m"
|
||||
printf "%s" "Please verify it is correct. [y/N]"
|
||||
read TMP_YN
|
||||
if [ -z "$TMP_YN" ] ; then
|
||||
echo -e "\nPlease type \e[31my\e[39m\n"
|
||||
exit
|
||||
fi
|
||||
|
||||
KEY_SIZE=${#LICENSE_KEY}
|
||||
TMP=$(echo $LICENSE_KEY | cut -c5)
|
||||
TMP2=$(echo $LICENSE_KEY | cut -c10)
|
||||
TMP3=$(echo $LICENSE_KEY | cut -c15)
|
||||
|
||||
if [[ $TMP == "-" ]] && [[ $TMP2 == "-" ]] && [[ $TMP3 == "-" ]] && [[ $KEY_SIZE == "19" ]] ; then
|
||||
echo -e "\nLicense key set..."
|
||||
elif [[ $LICENSE_KEY == "trial" ]] || [[ $LICENSE_KEY == "TRIAL" ]] || [[ $LICENSE_KEY == "Trial" ]] ; then
|
||||
echo -e "\nTrial license set..."
|
||||
LICENSE_KEY="TRIAL"
|
||||
else
|
||||
echo -e "\nLicense key seems incorrect, please verify\n"
|
||||
echo -e "\nIf you are copying/pasting, please make sure you didn't paste blank space...\n"
|
||||
exit
|
||||
fi
|
||||
}
|
||||
|
||||
interactive_mode() {
|
||||
echo -e " CyberPanel Installer v$CP_VER1$CP_VER2
|
||||
|
||||
1. Install CyberPanel.
|
||||
|
||||
2. Addons and Miscellaneous
|
||||
|
||||
3. Exit.
|
||||
|
||||
"
|
||||
read -p " Please enter the number[1-3]: " num
|
||||
echo ""
|
||||
case "$num" in
|
||||
1)
|
||||
interactive_install
|
||||
;;
|
||||
2)
|
||||
interactive_others
|
||||
;;
|
||||
3)
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
echo -e " Please enter the right number [1-3]\n"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
interactive_others() {
|
||||
if [ ! -e "/etc/cyberpanel/machineIP" ]; then
|
||||
echo -e "\nYou don't have CyberPanel installed...\n"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo -e " CyberPanel Addons v$CP_VER1$CP_VER2
|
||||
|
||||
1. Install Memcached extension and backend
|
||||
|
||||
2. Install Redis extension and backend
|
||||
|
||||
3. Return to main page.
|
||||
|
||||
4. Exit
|
||||
"
|
||||
|
||||
echo && read -p "Please enter the number[1-4]: " num
|
||||
case "$num" in
|
||||
1)
|
||||
memcached_installation
|
||||
exit
|
||||
;;
|
||||
2)
|
||||
redis_installation
|
||||
exit
|
||||
;;
|
||||
3)
|
||||
interactive_mode
|
||||
;;
|
||||
4)
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
echo -e "${Error} please enter the right number [1-4]"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
interactive_install() {
|
||||
RAM=$(free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }')
|
||||
DISK=$(df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}')
|
||||
#clear
|
||||
echo -e " CyberPanel Installer v$CP_VER1$CP_VER2
|
||||
|
||||
RAM check : $RAM
|
||||
|
||||
Disk check : $DISK (Minimal \e[31m10GB\e[39m free space)
|
||||
|
||||
1. Install CyberPanel with \e[31mOpenLiteSpeed\e[39m.
|
||||
|
||||
2. Install Cyberpanel with \e[31mLiteSpeed Enterprise\e[39m.
|
||||
|
||||
3. Exit.
|
||||
|
||||
"
|
||||
read -p " Please enter the number[1-3]: " num
|
||||
echo ""
|
||||
case "$num" in
|
||||
1)
|
||||
VERSION="OLS"
|
||||
;;
|
||||
2)
|
||||
license_input
|
||||
;;
|
||||
3)
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
echo -e " Please enter the right number [1-3]\n"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
|
||||
<<COMMENT
|
||||
echo -e "\nInstall minimal service for CyberPanel? This will skip PowerDNS, Postfix and Pure-FTPd."
|
||||
printf "%s" "Minimal installation [y/N]: "
|
||||
read TMP_YN
|
||||
if [ `expr "x$TMP_YN" : 'x[Yy]'` -gt 1 ]; then
|
||||
echo -e "\nMinimal installation selected..."
|
||||
POSTFIX_VARIABLE="OFF"
|
||||
POWERDNS_VARIABLE="OFF"
|
||||
PUREFTPD_VARIABLE="OFF"
|
||||
else
|
||||
printf "%s" "Install Postfix? [Y/n]: "
|
||||
read TMP_YN
|
||||
if [[ $TMP_YN =~ ^(no|n|N) ]] ; then
|
||||
POSTFIX_VARIABLE="OFF"
|
||||
else
|
||||
POSTFIX_VARIABLE="ON"
|
||||
fi
|
||||
printf "%s" "Install PowerDNS? [Y/n]: "
|
||||
read TMP_YN
|
||||
if [[ $TMP_YN =~ ^(no|n|N) ]] ; then
|
||||
POWERDNS_VARIABLE="OFF"
|
||||
else
|
||||
POWERDNS_VARIABLE="ON"
|
||||
fi
|
||||
printf "%s" "Install PureFTPd? [Y/n]: "
|
||||
read TMP_YN
|
||||
if [[ $TMP_YN =~ ^(no|n|N) ]] ; then
|
||||
PUREFTPD_VARIABLE="OFF"
|
||||
else
|
||||
PUREFTPD_VARIABLE="ON"
|
||||
fi
|
||||
fi
|
||||
COMMENT
|
||||
#above comment for future use
|
||||
|
||||
if [[ $DEV_ARG == "ON" ]] ; then
|
||||
echo -e "\nDo you want to specify which branch you want to install?"
|
||||
echo -e "\nNOTE: this feature is only for developers "
|
||||
echo -e "\nonly use this feature if you are a \e[31mdeveloper\e[39m"
|
||||
#echo -e "\nPlease press Enter key or n to proceed as normal user"
|
||||
#echo -e "\nPlease enter \e[31mdeveloper\e[39m to confirm you want to use this feature"
|
||||
#printf "%s" ""
|
||||
#read TMP_YN
|
||||
|
||||
#if [[ $TMP_YN == "developer" ]] ; then
|
||||
DEV="ON"
|
||||
echo -e "\nPlease specify branch name"
|
||||
printf "%s" ""
|
||||
read TMP_YN
|
||||
BRANCH_NAME=$TMP_YN
|
||||
echo -e "Branch name set to $BRANCH_NAME"
|
||||
#else
|
||||
# DEV="OFF"
|
||||
#fi
|
||||
fi
|
||||
|
||||
echo -e "\nPlease choose to use default admin password \e[31m1234567\e[39m, randomly generate one \e[31m(recommended)\e[39m or specify the admin password?"
|
||||
printf "%s" "Choose [d]fault, [r]andom or [s]et password: [d/r/s] "
|
||||
read TMP_YN
|
||||
|
||||
if [[ $TMP_YN =~ ^(d|D| ) ]] || [[ -z $TMP_YN ]]; then
|
||||
ADMIN_PASS="1234567"
|
||||
echo -e "\nAdmin password will be set to $ADMIN_PASS\n"
|
||||
elif [[ $TMP_YN =~ ^(r|R) ]] ; then
|
||||
ADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '')
|
||||
echo -e "\nAdmin password will be provided once installation is completed...\n"
|
||||
elif [[ $TMP_YN =~ ^(s|S) ]] ; then
|
||||
echo -e "\nPlease enter your password:"
|
||||
printf "%s" ""
|
||||
read TMP_YN
|
||||
if [ -z "$TMP_YN" ] ; then
|
||||
echo -e "\nPlease do not use empty string...\n"
|
||||
exit
|
||||
fi
|
||||
if [ ${#TMP_YN} -lt 8 ] ; then
|
||||
echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n"
|
||||
exit
|
||||
fi
|
||||
TMP_YN1=$TMP_YN
|
||||
echo -e "\nPlease confirm your password:\n"
|
||||
printf "%s" ""
|
||||
read TMP_YN
|
||||
if [ -z "$TMP_YN" ] ; then
|
||||
echo -e "\nPlease do not use empty string...\n"
|
||||
exit
|
||||
fi
|
||||
TMP_YN2=$TMP_YN
|
||||
if [ $TMP_YN1 = $TMP_YN2 ] ; then
|
||||
ADMIN_PASS=$TMP_YN1
|
||||
else
|
||||
echo -e "\nRepeated password didn't match , please check...\n"
|
||||
exit
|
||||
fi
|
||||
else
|
||||
ADMIN_PASS="1234567"
|
||||
echo -e "\nAdmin password will be set to $ADMIN_PASS\n"
|
||||
fi
|
||||
|
||||
echo -e "\nDo you wish to install Memcached extension and backend?"
|
||||
printf "%s" "Please select [Y/n]: "
|
||||
read TMP_YN
|
||||
if [[ $TMP_YN =~ ^(no|n|N) ]] ; then
|
||||
MEMCACHED="OFF"
|
||||
else
|
||||
MEMCACHED="ON"
|
||||
fi
|
||||
|
||||
echo -e "\nDo you wish to install Redis extension and backend?"
|
||||
printf "%s" "Please select [Y/n]: "
|
||||
read TMP_YN
|
||||
if [[ $TMP_YN =~ ^(no|n|N) ]] ; then
|
||||
REDIS="OFF"
|
||||
else
|
||||
REDIS="ON"
|
||||
fi
|
||||
|
||||
echo -e "\nWhich MariaDB version do you want to install? \e[31m11.8\e[39m (LTS, default) or \e[31m12.1\e[39m?"
|
||||
printf "%s" "Choose [1] for 11.8 LTS (recommended), [2] for 12.1, or press Enter for default [1]: "
|
||||
read TMP_YN
|
||||
if [[ $TMP_YN =~ ^(2|12\.1) ]] ; then
|
||||
MARIADB_VER="12.1"
|
||||
echo -e "\nMariaDB 12.1 will be installed.\n"
|
||||
else
|
||||
MARIADB_VER="11.8"
|
||||
echo -e "\nMariaDB 11.8 LTS will be installed (default).\n"
|
||||
fi
|
||||
}
|
||||
|
||||
main_install() {
|
||||
|
||||
if [[ -e /usr/local/CyberCP ]] ; then
|
||||
echo -e "\n CyberPanel already installed, exiting..."
|
||||
#exit
|
||||
fi
|
||||
|
||||
special_change
|
||||
|
||||
if [[ $VERSION == "ENT" ]] ; then
|
||||
echo -e "\nValidating the license..."
|
||||
echo -e "\nThis may take a minute..."
|
||||
echo -e "\nplease be patient...\n\n"
|
||||
license_validation
|
||||
SERIAL_NO="--ent ent --serial "
|
||||
fi
|
||||
|
||||
sed -i 's|lsws-5.4.2|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py
|
||||
sed -i 's|lsws-5.3.5|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py
|
||||
sed -i 's|lsws-6.0|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py
|
||||
sed -i 's|lsws-6.3.4|lsws-'$LSWS_STABLE_VER'|g' installCyberPanel.py
|
||||
#this sed must be done after license validation
|
||||
|
||||
echo -e "Preparing..."
|
||||
echo -e "Installation will start in 10 seconds, if you wish to stop please press CTRL + C"
|
||||
sleep 10
|
||||
main_install_run
|
||||
}
|
||||
|
||||
125
install/venvsetup_modules/03_main_run_pip.sh
Normal file
125
install/venvsetup_modules/03_main_run_pip.sh
Normal file
@@ -0,0 +1,125 @@
|
||||
#!/usr/bin/env bash
|
||||
# install/venvsetup part 3 – main_install_run, pip_virtualenv
|
||||
main_install_run() {
|
||||
debug="1"
|
||||
if [[ $debug == "0" ]] ; then
|
||||
echo "/usr/local/CyberPanel/bin/python2 install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY"
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ $debug == "1" ]] ; then
|
||||
if [[ $DEV == "ON" ]] ; then
|
||||
/usr/local/CyberPanel/bin/python install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --mariadb-version "${MARIADB_VER:-11.8}"
|
||||
else
|
||||
/usr/local/CyberPanel/bin/python2 install.py $SERVER_IP $SERIAL_NO $LICENSE_KEY --mariadb-version "${MARIADB_VER:-11.8}"
|
||||
fi
|
||||
|
||||
if grep "CyberPanel installation successfully completed" /var/log/installLogs.txt > /dev/null; then
|
||||
echo -e "\nCyberPanel installation sucessfully completed..."
|
||||
else
|
||||
echo -e "Oops, something went wrong..."
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ $MEMCACHED == "ON" ]] ; then
|
||||
memcached_installation
|
||||
fi
|
||||
if [[ $REDIS == "ON" ]] ; then
|
||||
redis_installation
|
||||
fi
|
||||
after_install
|
||||
fi
|
||||
}
|
||||
|
||||
pip_virtualenv() {
|
||||
if [[ $DEV == "OFF" ]] ; then
|
||||
if [[ $SERVER_COUNTRY == "CN" ]] ; then
|
||||
mkdir /root/.pip
|
||||
cat << EOF > /root/.pip/pip.conf
|
||||
[global]
|
||||
index-url = https://mirrors.aliyun.com/pypi/simple/
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [[ $PROVIDER == "Alibaba Cloud" ]] ; then
|
||||
pip install --upgrade pip 2>/dev/null || echo "⚠️ pip upgrade completed with warnings"
|
||||
pip install setuptools==40.8.0 2>/dev/null || echo "⚠️ setuptools installation completed with warnings"
|
||||
fi
|
||||
|
||||
pip install virtualenv 2>/dev/null || echo "⚠️ virtualenv installation completed with warnings"
|
||||
|
||||
# Create virtual environment with fallback for Ubuntu 22.04 compatibility
|
||||
echo "Creating CyberPanel virtual environment..."
|
||||
if python3 -m venv --system-site-packages /usr/local/CyberPanel 2>&1 | grep -q "unrecognized option"; then
|
||||
# Fallback to virtualenv if python3 -m venv doesn't support --system-site-packages
|
||||
virtualenv --system-site-packages /usr/local/CyberPanel
|
||||
elif python3 -m venv --system-site-packages /usr/local/CyberPanel 2>/dev/null; then
|
||||
echo "Virtual environment created successfully using python3 -m venv"
|
||||
else
|
||||
# Final fallback to virtualenv
|
||||
virtualenv --system-site-packages /usr/local/CyberPanel
|
||||
fi
|
||||
|
||||
source /usr/local/CyberPanel/bin/activate
|
||||
rm -rf requirements.txt
|
||||
wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/1.8.0/requirments.txt
|
||||
# Install packages with robust error handling to prevent broken pipe errors
|
||||
safe_pip_install "pip" "requirements.txt" "--ignore-installed"
|
||||
fi
|
||||
|
||||
if [[ $DEV == "ON" ]] ; then
|
||||
#install dev branch
|
||||
#wget https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/requirments.txt
|
||||
cd /usr/local/
|
||||
python3.6 -m venv CyberPanel
|
||||
source /usr/local/CyberPanel/bin/activate
|
||||
|
||||
# Try to download requirements file with fallback options
|
||||
echo "Attempting to download requirements for branch/commit: $BRANCH_NAME"
|
||||
|
||||
# First try the specified branch/commit
|
||||
if wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/requirments.txt 2>/dev/null; then
|
||||
echo "Successfully downloaded requirements from $BRANCH_NAME"
|
||||
elif wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/requirments-old.txt 2>/dev/null; then
|
||||
echo "Successfully downloaded requirements-old.txt from $BRANCH_NAME"
|
||||
elif wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/requirments.txt 2>/dev/null; then
|
||||
echo "Fallback: Downloaded requirements from stable branch"
|
||||
else
|
||||
echo "Warning: Could not download requirements file, using minimal default requirements"
|
||||
cat > requirements.txt << 'EOF'
|
||||
# Minimal CyberPanel requirements - fallback when requirements file is not available
|
||||
Django==3.2.25
|
||||
PyMySQL==1.1.0
|
||||
requests==2.31.0
|
||||
cryptography==41.0.7
|
||||
psutil==5.9.6
|
||||
EOF
|
||||
fi
|
||||
|
||||
safe_pip_install "pip3.6" "requirements.txt" "--ignore-installed"
|
||||
fi
|
||||
|
||||
if [ -f requirements.txt ] && [ -d cyberpanel ] ; then
|
||||
rm -rf cyberpanel
|
||||
rm -f requirements.txt
|
||||
fi
|
||||
|
||||
if [[ $SERVER_COUNTRY == "CN" ]] ; then
|
||||
wget https://cyberpanel.sh/cyberpanel-git.tar.gz
|
||||
tar xzvf cyberpanel-git.tar.gz > /dev/null
|
||||
cp -r cyberpanel /usr/local/cyberpanel
|
||||
cd cyberpanel/install
|
||||
else
|
||||
if [[ $DEV == "ON" ]] ; then
|
||||
git clone https://github.com/usmannasir/cyberpanel
|
||||
cd cyberpanel
|
||||
git checkout $BRANCH_NAME
|
||||
cd -
|
||||
cd cyberpanel/install
|
||||
else
|
||||
git clone https://github.com/usmannasir/cyberpanel
|
||||
cd cyberpanel/install
|
||||
fi
|
||||
fi
|
||||
curl https://cyberpanel.sh/?version
|
||||
}
|
||||
239
install/venvsetup_modules/04_after_install.sh
Normal file
239
install/venvsetup_modules/04_after_install.sh
Normal file
@@ -0,0 +1,239 @@
|
||||
#!/usr/bin/env bash
|
||||
# install/venvsetup part 4 – after_install
|
||||
|
||||
after_install() {
|
||||
if [ ! -d "/var/lib/php" ]; then
|
||||
mkdir /var/lib/php
|
||||
fi
|
||||
|
||||
if [ ! -d "/var/lib/php/session" ]; then
|
||||
mkdir /var/lib/php/session
|
||||
fi
|
||||
|
||||
chmod 1733 /var/lib/php/session
|
||||
|
||||
if grep "\[ERROR\] We are not able to run ./install.sh return code: 1. Fatal error, see /var/log/installLogs.txt for full details" /var/log/installLogs.txt > /dev/null; then
|
||||
cd ${DIR}/cyberpanel/install/lsws-*
|
||||
./install.sh
|
||||
echo -e "\n\n\nIt seems LiteSpeed Enterprise has failed to install, please check your license key is valid"
|
||||
echo -e "\nIf this license key has been used before, you may need to go to store to release it first."
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if grep "CyberPanel installation successfully completed" /var/log/installLogs.txt > /dev/null; then
|
||||
|
||||
if [[ $DEV == "ON" ]] ; then
|
||||
python3.6 -m venv /usr/local/CyberCP
|
||||
source /usr/local/CyberCP/bin/activate
|
||||
|
||||
# Try to download requirements file with fallback options
|
||||
echo "Attempting to download requirements for branch/commit: $BRANCH_NAME"
|
||||
|
||||
# First try the specified branch/commit
|
||||
if wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/requirments.txt 2>/dev/null; then
|
||||
echo "Successfully downloaded requirements from $BRANCH_NAME"
|
||||
elif wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/$BRANCH_NAME/requirments-old.txt 2>/dev/null; then
|
||||
echo "Successfully downloaded requirements-old.txt from $BRANCH_NAME"
|
||||
elif wget -O requirements.txt https://raw.githubusercontent.com/usmannasir/cyberpanel/stable/requirments.txt 2>/dev/null; then
|
||||
echo "Fallback: Downloaded requirements from stable branch"
|
||||
else
|
||||
echo "Warning: Could not download requirements file, using minimal default requirements"
|
||||
cat > requirements.txt << 'EOF'
|
||||
# Minimal CyberPanel requirements - fallback when requirements file is not available
|
||||
Django==3.2.25
|
||||
PyMySQL==1.1.0
|
||||
requests==2.31.0
|
||||
cryptography==41.0.7
|
||||
psutil==5.9.6
|
||||
EOF
|
||||
fi
|
||||
|
||||
safe_pip_install "pip3.6" "requirements.txt" "--ignore-installed"
|
||||
systemctl restart lscpd
|
||||
fi
|
||||
|
||||
for version in $(ls /usr/local/lsws | grep lsphp);
|
||||
do
|
||||
php_ini=$(find /usr/local/lsws/$version/ -name php.ini)
|
||||
version2=${version:5:2}
|
||||
version2=$(awk "BEGIN { print "${version2}/10" }")
|
||||
if [[ $version2 = "7" ]] ; then
|
||||
version2="7.0"
|
||||
fi
|
||||
if [[ $SERVER_OS == "CentOS" ]] ; then
|
||||
yum remove -y $version-mysql
|
||||
yum install -y $version-mysqlnd
|
||||
yum install -y $version-devel make gcc glibc-devel libmemcached-devel zlib-devel
|
||||
if [[ ! -d /usr/local/lsws/$version/tmp ]] ; then
|
||||
mkdir /usr/local/lsws/$version/tmp
|
||||
fi
|
||||
/usr/local/lsws/${version}/bin/pecl channel-update pecl.php.net;
|
||||
/usr/local/lsws/${version}/bin/pear config-set temp_dir /usr/local/lsws/${version}/tmp
|
||||
/usr/local/lsws/${version}/bin/pecl install timezonedb
|
||||
echo "extension=timezonedb.so" > /usr/local/lsws/${version}/etc/php.d/20-timezone.ini
|
||||
sed -i 's|expose_php = On|expose_php = Off|g' $php_ini
|
||||
sed -i 's|mail.add_x_header = On|mail.add_x_header = Off|g' $php_ini
|
||||
sed -i 's|;session.save_path = "/tmp"|session.save_path = "/var/lib/php/session"|g' $php_ini
|
||||
fi
|
||||
|
||||
if [[ $SERVER_OS == "Ubuntu" ]] ; then
|
||||
if [[ ! -d /usr/local/lsws/cyberpanel-tmp ]] ; then
|
||||
echo "yes" > /etc/pure-ftpd/conf/ChrootEveryone
|
||||
systemctl restart pure-ftpd-mysql
|
||||
DEBIAN_FRONTEND=noninteractive apt install libmagickwand-dev pkg-config build-essential -y
|
||||
mkdir /usr/local/lsws/cyberpanel-tmp
|
||||
cd /usr/local/lsws/cyberpanel-tmp
|
||||
wget https://pecl.php.net/get/timezonedb-2019.3.tgz
|
||||
tar xzvf timezonedb-2019.3.tgz
|
||||
cd timezonedb-2019.3
|
||||
fi
|
||||
/usr/local/lsws/${version}/bin/phpize
|
||||
./configure --with-php-config=/usr/local/lsws/${version}/bin/php-config${version2}
|
||||
make
|
||||
make install
|
||||
# Only create .ini file if extension was successfully installed
|
||||
# Check if timezonedb.so exists in the extension directory
|
||||
ext_dir=$(/usr/local/lsws/${version}/bin/php-config${version2} --extension-dir)
|
||||
if [[ -f "${ext_dir}/timezonedb.so" ]] ; then
|
||||
mkdir -p /usr/local/lsws/${version}/etc/php/${version2}/mods-available
|
||||
echo "extension=timezonedb.so" > /usr/local/lsws/${version}/etc/php/${version2}/mods-available/20-timezone.ini
|
||||
fi
|
||||
make clean
|
||||
fi
|
||||
done
|
||||
|
||||
rm -rf /etc/profile.d/cyberpanel*
|
||||
curl --silent -o /etc/profile.d/cyberpanel.sh https://cyberpanel.sh/?banner 2>/dev/null
|
||||
chmod +x /etc/profile.d/cyberpanel.sh
|
||||
RAM2=$(free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }')
|
||||
DISK2=$(df -h | awk '$NF=="/"{printf "%d/%dGB (%s)\n", $3,$2,$5}')
|
||||
ELAPSED="$(($SECONDS / 3600)) hrs $((($SECONDS / 60) % 60)) min $(($SECONDS % 60)) sec"
|
||||
MYSQLPASSWD=$(cat /etc/cyberpanel/mysqlPassword)
|
||||
echo "$ADMIN_PASS" > /etc/cyberpanel/adminPass
|
||||
/usr/local/CyberPanel/bin/python2 /usr/local/CyberCP/plogical/adminPass.py --password $ADMIN_PASS
|
||||
systemctl restart lscpd
|
||||
systemctl restart lsws
|
||||
echo "/usr/local/CyberPanel/bin/python2 /usr/local/CyberCP/plogical/adminPass.py --password \"\$@\"" > /usr/bin/adminPass
|
||||
echo "systemctl restart lscpd" >> /usr/bin/adminPass
|
||||
chmod +x /usr/bin/adminPass
|
||||
if [[ $VERSION = "OLS" ]] ; then
|
||||
WORD="OpenLiteSpeed"
|
||||
# sed -i 's|maxConnections 10000|maxConnections 100000|g' /usr/local/lsws/conf/httpd_config.conf
|
||||
# OLS_LATEST=$(curl https://openlitespeed.org/packages/release)
|
||||
# wget https://openlitespeed.org/packages/openlitespeed-$OLS_LATEST.tgz
|
||||
# tar xzvf openlitespeed-$OLS_LATEST.tgz
|
||||
# cd openlitespeed
|
||||
# ./install.sh
|
||||
/usr/local/lsws/bin/lswsctrl stop
|
||||
/usr/local/lsws/bin/lswsctrl start
|
||||
# rm -f openlitespeed-$OLS_LATEST.tgz
|
||||
# rm -rf openlitespeed
|
||||
# cd ..
|
||||
fi
|
||||
if [[ $VERSION = "ENT" ]] ; then
|
||||
WORD="LiteSpeed Enterprise"
|
||||
if [[ $SERVER_COUNTRY != "CN" ]] ; then
|
||||
/usr/local/lsws/admin/misc/lsup.sh -f -v $LSWS_STABLE_VER
|
||||
fi
|
||||
fi
|
||||
|
||||
systemctl status lsws 2>&1>/dev/null
|
||||
if [[ $? == "0" ]] ; then
|
||||
echo "LSWS service is running..."
|
||||
else
|
||||
systemctl stop lsws
|
||||
systemctl start lsws
|
||||
fi
|
||||
|
||||
clear
|
||||
echo "###################################################################"
|
||||
echo " CyberPanel Successfully Installed "
|
||||
echo " "
|
||||
echo " Current Disk usage : $DISK2 "
|
||||
echo " "
|
||||
echo " Current RAM usage : $RAM2 "
|
||||
echo " "
|
||||
echo " Installation time : $ELAPSED "
|
||||
echo " "
|
||||
echo " Visit: https://$SERVER_IP:8090 "
|
||||
echo " Panel username: admin "
|
||||
echo " Panel password: $ADMIN_PASS "
|
||||
#echo " Mysql username: root "
|
||||
#echo " Mysql password: $MYSQLPASSWD "
|
||||
echo " "
|
||||
echo " Please change your default admin password "
|
||||
echo " If you need to reset your panel password, please run: "
|
||||
echo " adminPass YOUR_NEW_PASSWORD "
|
||||
echo " "
|
||||
echo " If you change mysql password, please modify file in "
|
||||
echo -e " \e[31m/etc/cyberpanel/mysqlPassword\e[39m with new password as well "
|
||||
echo " "
|
||||
echo " Website : https://www.cyberpanel.net "
|
||||
echo " Forums : https://forums.cyberpanel.net "
|
||||
echo " Wikipage: https://cyberpanel.net/KnowledgeBase/ "
|
||||
echo " "
|
||||
echo -e " Enjoy your accelerated Internet by "
|
||||
echo -e " CyberPanel & $WORD "
|
||||
echo "###################################################################"
|
||||
if [[ $PROVIDER != "undefined" ]] ; then
|
||||
echo -e "\033[0;32m$PROVIDER\033[39m detected..."
|
||||
echo -e "This provider has a \e[31mnetwork-level firewall\033[39m"
|
||||
else
|
||||
echo -e "If your provider has a \e[31mnetwork-level firewall\033[39m"
|
||||
fi
|
||||
echo -e "Please make sure you have opened following port for both in/out:"
|
||||
echo -e "\033[0;32mTCP: 8090\033[39m for CyberPanel"
|
||||
echo -e "\033[0;32mTCP: 80\033[39m, \033[0;32mTCP: 443\033[39m and \033[0;32mUDP: 443\033[39m for webserver"
|
||||
echo -e "\033[0;32mTCP: 21\033[39m and \033[0;32mTCP: 40110-40210\033[39m for FTP"
|
||||
echo -e "\033[0;32mTCP: 25\033[39m, \033[0;32mTCP: 587\033[39m, \033[0;32mTCP: 465\033[39m, \033[0;32mTCP: 110\033[39m, \033[0;32mTCP: 143\033[39m and \033[0;32mTCP: 993\033[39m for mail service"
|
||||
echo -e "\033[0;32mTCP: 53\033[39m and \033[0;32mUDP: 53\033[39m for DNS service"
|
||||
if [[ $SERVER_COUNTRY = CN ]] ; then
|
||||
if [[ $PROVIDER == "Tencent Cloud" ]] ; then
|
||||
if [[ $SERVER_OS == "Ubuntu" ]] ; then
|
||||
rm -f /etc/apt/sources.list
|
||||
mv /etc/apt/sources.list-backup /etc/apt/sources.list
|
||||
echo > "nameserver 127.0.0.53
|
||||
options edns0" /run/systemd/resolve/stub-resolv.conf
|
||||
echo > "nameserver 127.0.0.53
|
||||
options edns0" /etc/resolv.conf
|
||||
apt update
|
||||
#revert the previous change on tencent cloud repo.
|
||||
fi
|
||||
fi
|
||||
if [[ $VERSION = "ENT" ]] ; then
|
||||
sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.5-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/install/installCyberPanel.py
|
||||
sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|https://cyberpanel.sh/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
|
||||
sed -i 's|https://www.litespeedtech.com/packages/5.0/lsws-5.3.8-ent-x86_64-linux.tar.gz|https://'$DOWNLOAD_SERVER'/litespeed/lsws-'$LSWS_STABLE_VER'-ent-x86_64-linux.tar.gz|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
|
||||
echo -e "If you have install LiteSpeed Enterprise, please run \e[31m/usr/local/lsws/admin/misc/lsup.sh\033[39m to update it to latest."
|
||||
fi
|
||||
fi
|
||||
|
||||
sed -i 's|lsws-5.3.8|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
|
||||
sed -i 's|lsws-5.4.2|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
|
||||
sed -i 's|lsws-5.3.5|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
|
||||
sed -i 's|lsws-6.0|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
|
||||
sed -i 's|lsws-6.3.4|lsws-'$LSWS_STABLE_VER'|g' /usr/local/CyberCP/serverStatus/serverStatusUtil.py
|
||||
|
||||
if [[ $SILENT != "ON" ]] ; then
|
||||
printf "%s" "Would you like to restart your server now? [y/N]: "
|
||||
read TMP_YN
|
||||
|
||||
if [[ "$TMP_YN" = "N" ]] || [[ "$TMP_YN" = "n" ]] || [[ -z "$TMP_YN" ]]; then
|
||||
:
|
||||
else
|
||||
reboot
|
||||
exit
|
||||
fi
|
||||
|
||||
exit
|
||||
fi
|
||||
#replace URL for CN
|
||||
|
||||
|
||||
|
||||
else
|
||||
echo "something went wrong..."
|
||||
exit
|
||||
fi
|
||||
}
|
||||
156
install/venvsetup_modules/05_argument_main.sh
Normal file
156
install/venvsetup_modules/05_argument_main.sh
Normal file
@@ -0,0 +1,156 @@
|
||||
#!/usr/bin/env bash
|
||||
# install/venvsetup part 5 – argument_mode and main flow
|
||||
|
||||
argument_mode() {
|
||||
KEY_SIZE=${#VERSION}
|
||||
TMP=$(echo $VERSION | cut -c5)
|
||||
TMP2=$(echo $VERSION | cut -c10)
|
||||
TMP3=$(echo $VERSION | cut -c15)
|
||||
if [[ $VERSION == "OLS" || $VERSION == "ols" ]] ; then
|
||||
VERSION="OLS"
|
||||
echo -e "\nSet to OpenLiteSpeed..."
|
||||
elif [[ $VERSION == "Trial" ]] || [[ $VERSION == "TRIAL" ]] || [[ $VERSION == "trial" ]] ; then
|
||||
VERSION="ENT"
|
||||
LICENSE_KEY="TRIAL"
|
||||
echo -e "\nLiteSpeed Enterprise trial license set..."
|
||||
elif [[ $TMP == "-" ]] && [[ $TMP2 == "-" ]] && [[ $TMP3 == "-" ]] && [[ $KEY_SIZE == "19" ]] ; then
|
||||
LICENSE_KEY=$VERSION
|
||||
VERSION="ENT"
|
||||
echo -e "\nLiteSpeed Enterprise license key set..."
|
||||
else
|
||||
echo -e "\nCan not recognize the input value \e[31m$VERSION\e[39m "
|
||||
echo -e "\nPlease verify the input value..."
|
||||
echo -e "\nPlease run with \e[31m-h\e[39m or \e[31m--help\e[39m for more detail."
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ $ADMIN_PASS == "d" ]] ; then
|
||||
ADMIN_PASS="1234567"
|
||||
echo -e "\nSet to default password..."
|
||||
echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m"
|
||||
elif [[ $ADMIN_PASS == "r" ]] ; then
|
||||
ADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '')
|
||||
echo -e "\nSet to random-generated password..."
|
||||
echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m"
|
||||
echo $ADMIN_PASS
|
||||
else
|
||||
echo -e "\nAdmin password will be set to \e[31m$ADMIN_PASS\e[39m"
|
||||
fi
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ] ; then
|
||||
echo -e "\nInitializing...\n"
|
||||
else
|
||||
if [[ $1 == "help" ]] ; then
|
||||
show_help
|
||||
exit
|
||||
elif [[ $1 == "dev" ]] ; then
|
||||
DEV="ON"
|
||||
DEV_ARG="ON"
|
||||
SILENT="OFF"
|
||||
elif [[ $1 == "default" ]] ; then
|
||||
echo -e "\nThis will start default installation...\n"
|
||||
SILENT="ON"
|
||||
POSTFIX_VARIABLE="ON"
|
||||
POWERDNS_VARIABLE="ON"
|
||||
PUREFTPD_VARIABLE="ON"
|
||||
VERSION="OLS"
|
||||
ADMIN_PASS="1234567"
|
||||
MEMCACHED="ON"
|
||||
REDIS="ON"
|
||||
else
|
||||
while [ ! -z "${1}" ]; do
|
||||
case $1 in
|
||||
-v | --version) shift
|
||||
if [ "${1}" = '' ]; then
|
||||
show_help
|
||||
exit
|
||||
else
|
||||
VERSION="${1}"
|
||||
SILENT="ON"
|
||||
fi
|
||||
;;
|
||||
-p | --password) shift
|
||||
if [[ "${1}" == '' ]]; then
|
||||
ADMIN_PASS="1234567"
|
||||
elif [[ "${1}" == 'r' ]] || [[ $1 == 'random' ]] ; then
|
||||
ADMIN_PASS=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 16 ; echo '')
|
||||
else
|
||||
if [ ${1} -lt 8 ] ; then
|
||||
echo -e "\nPassword lenth less than 8 digital, please choose a more complicated password.\n"
|
||||
exit
|
||||
fi
|
||||
ADMIN_PASS="${1}"
|
||||
fi
|
||||
;;
|
||||
-a | --addons)
|
||||
MEMCACHED="ON"
|
||||
REDIS="ON"
|
||||
;;
|
||||
-m | --minimal)
|
||||
echo "minimal installation is still work in progress..."
|
||||
exit
|
||||
;;
|
||||
-h | --help)
|
||||
show_help
|
||||
exit
|
||||
;;
|
||||
*)
|
||||
echo "unknown argument..."
|
||||
show_help
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
SERVER_IP=$(curl --silent --max-time 10 -4 https://cyberpanel.sh/?ip)
|
||||
if [[ $SERVER_IP =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo -e "Valid IP detected..."
|
||||
else
|
||||
echo -e "Can not detect IP, exit..."
|
||||
exit
|
||||
fi
|
||||
SERVER_COUNTRY="unknow"
|
||||
SERVER_COUNTRY=$(curl --silent --max-time 5 https://cyberpanel.sh/?country)
|
||||
if [[ ${#SERVER_COUNTRY} == "2" ]] || [[ ${#SERVER_COUNTRY} == "6" ]] ; then
|
||||
echo -e "\nChecking server..."
|
||||
else
|
||||
echo -e "\nChecking server..."
|
||||
SERVER_COUNTRY="unknow"
|
||||
fi
|
||||
#SERVER_COUNTRY="CN"
|
||||
#test string
|
||||
if [[ $SERVER_COUNTRY == "CN" ]] ; then
|
||||
DOWNLOAD_SERVER="cyberpanel.sh"
|
||||
else
|
||||
DOWNLOAD_SERVER="cdn.cyberpanel.sh"
|
||||
fi
|
||||
|
||||
check_OS
|
||||
check_root
|
||||
check_panel
|
||||
check_process
|
||||
check_provider
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if [[ $SILENT = "ON" ]] ; then
|
||||
argument_mode
|
||||
else
|
||||
interactive_mode
|
||||
fi
|
||||
|
||||
SECONDS=0
|
||||
install_required
|
||||
|
||||
pip_virtualenv
|
||||
|
||||
system_tweak
|
||||
|
||||
1433
install/venvsetup_monolithic.sh
Normal file
1433
install/venvsetup_monolithic.sh
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user