Various FreeBSD improvements (#3219)
* Fix permission denied (/var/run/stalwart.pid) on FreeBSD install * Remove jemalloc dependency on FreeBSD (which is already using jemalloc) * Enabling binding to privileged ports on FreeBSD
This commit is contained in:
@@ -40,7 +40,7 @@ migration = { path = "../migration" }
|
|||||||
tokio = { version = "1.47", features = ["full"] }
|
tokio = { version = "1.47", features = ["full"] }
|
||||||
rustls = { version = "0.23.5", default-features = false, features = ["std", "aws_lc_rs", "tls12"] }
|
rustls = { version = "0.23.5", default-features = false, features = ["std", "aws_lc_rs", "tls12"] }
|
||||||
|
|
||||||
[target.'cfg(not(target_env = "msvc"))'.dependencies]
|
[target.'cfg(not(any(target_env = "msvc", target_os = "freebsd")))'.dependencies]
|
||||||
jemallocator = "0.5.0"
|
jemallocator = "0.5.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ use utils::wait_for_shutdown;
|
|||||||
#[cfg(feature = "dev_mode")]
|
#[cfg(feature = "dev_mode")]
|
||||||
pub mod test_data;
|
pub mod test_data;
|
||||||
|
|
||||||
#[cfg(not(target_env = "msvc"))]
|
#[cfg(not(any(target_env = "msvc", target_os = "freebsd")))]
|
||||||
use jemallocator::Jemalloc;
|
use jemallocator::Jemalloc;
|
||||||
|
|
||||||
#[cfg(not(target_env = "msvc"))]
|
#[cfg(not(any(target_env = "msvc", target_os = "freebsd")))]
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static GLOBAL: Jemalloc = Jemalloc;
|
static GLOBAL: Jemalloc = Jemalloc;
|
||||||
|
|
||||||
|
|||||||
13
install.sh
13
install.sh
@@ -486,7 +486,8 @@ desc="Stalwart Server"
|
|||||||
load_rc_config \$name
|
load_rc_config \$name
|
||||||
|
|
||||||
: \${stalwart_enable:="NO"}
|
: \${stalwart_enable:="NO"}
|
||||||
: \${stalwart_user:="${_user}"}
|
: \${stalwart_runas_user:="${_user}"}
|
||||||
|
: \${stalwart_runas_group:="${_user}"}
|
||||||
: \${stalwart_config:="${_config}"}
|
: \${stalwart_config:="${_config}"}
|
||||||
: \${stalwart_envfile:="${_env}"}
|
: \${stalwart_envfile:="${_env}"}
|
||||||
: \${stalwart_logfile:="${_log_dir}/stalwart.log"}
|
: \${stalwart_logfile:="${_log_dir}/stalwart.log"}
|
||||||
@@ -495,7 +496,7 @@ load_rc_config \$name
|
|||||||
pidfile="/var/run/stalwart.pid"
|
pidfile="/var/run/stalwart.pid"
|
||||||
procname="${_bin}"
|
procname="${_bin}"
|
||||||
command="/usr/sbin/daemon"
|
command="/usr/sbin/daemon"
|
||||||
command_args="-f -o \${stalwart_logfile} -p \${pidfile} -u \${stalwart_user} ${_bin} --config=\${stalwart_config}"
|
command_args="-f -o \${stalwart_logfile} -p \${pidfile} ${_bin} --config=\${stalwart_config}"
|
||||||
sig_stop="INT"
|
sig_stop="INT"
|
||||||
start_precmd="stalwart_precmd"
|
start_precmd="stalwart_precmd"
|
||||||
|
|
||||||
@@ -507,10 +508,12 @@ stalwart_precmd()
|
|||||||
. "\${stalwart_envfile}"
|
. "\${stalwart_envfile}"
|
||||||
set +a
|
set +a
|
||||||
fi
|
fi
|
||||||
ulimit -n "\${stalwart_fdlimit}"
|
|
||||||
|
|
||||||
# Binding privileged ports (25/443/465/993/...) as a non-root user
|
# Stalwart binds its listeners as root, then setuid()s to this account
|
||||||
# requires: sysctl net.inet.ip.portrange.reservedhigh=0
|
export RUN_AS_USER="\${stalwart_runas_user}"
|
||||||
|
export RUN_AS_GROUP="\${stalwart_runas_group}"
|
||||||
|
|
||||||
|
ulimit -n "\${stalwart_fdlimit}"
|
||||||
}
|
}
|
||||||
|
|
||||||
run_rc_command "\$1"
|
run_rc_command "\$1"
|
||||||
|
|||||||
@@ -89,5 +89,5 @@ time = "0.3"
|
|||||||
testcontainers = { version = "0.27", features = ["reusable-containers"] }
|
testcontainers = { version = "0.27", features = ["reusable-containers"] }
|
||||||
rust-s3 = { version = "0.37", default-features = false, features = ["tokio-rustls-tls"] }
|
rust-s3 = { version = "0.37", default-features = false, features = ["tokio-rustls-tls"] }
|
||||||
|
|
||||||
[target.'cfg(not(target_env = "msvc"))'.dependencies]
|
[target.'cfg(not(any(target_env = "msvc", target_os = "freebsd")))'.dependencies]
|
||||||
jemallocator = "0.5.0"
|
jemallocator = "0.5.0"
|
||||||
|
|||||||
@@ -6,10 +6,10 @@
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
use ::store::registry::bootstrap::Bootstrap;
|
use ::store::registry::bootstrap::Bootstrap;
|
||||||
#[cfg(not(target_env = "msvc"))]
|
#[cfg(not(any(target_env = "msvc", target_os = "freebsd")))]
|
||||||
use jemallocator::Jemalloc;
|
use jemallocator::Jemalloc;
|
||||||
|
|
||||||
#[cfg(not(target_env = "msvc"))]
|
#[cfg(not(any(target_env = "msvc", target_os = "freebsd")))]
|
||||||
#[global_allocator]
|
#[global_allocator]
|
||||||
static GLOBAL: Jemalloc = Jemalloc;
|
static GLOBAL: Jemalloc = Jemalloc;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user