|
@@ -150,40 +150,70 @@ function configure_email_onion {
|
150
|
150
|
set_completion_param "email onion domain" "${onion_address}"
|
151
|
151
|
add_email_hostname "$onion_address"
|
152
|
152
|
|
153
|
|
- #echo "$DEFAULT_DOMAIN_NAME $onion_address" > /etc/exim4/onionrelay.txt
|
154
|
|
- #cdb -m -c -t /tmp/onionrelay.tmp /etc/exim4/onionrelay.cdb /etc/exim4/onionrelay.txt
|
155
|
|
-
|
156
|
|
- #{ "perl_startup = do '/etc/exim4/perl-routines.pl'";
|
157
|
|
- # "perl_at_start"; } > /etc/exim4/conf.d/main/perl
|
158
|
|
-
|
159
|
|
- #{ "use Net::DNS::Resolver;";
|
160
|
|
- # "sub onionLookup {";
|
161
|
|
- # " my \$hostname = shift;";
|
162
|
|
- # " my \$res = Net::DNS::Resolver->new(nameservers => [qw(127.0.0.1)],);";
|
163
|
|
- # " \$res->port(5300);";
|
164
|
|
- # " my \$query = \$res->search(\$hostname);";
|
165
|
|
- # " foreach my \$rr (\$query->answer) {";
|
166
|
|
- # " next unless \$rr->type eq \"A\";";
|
167
|
|
- # " return \$rr->address;";
|
168
|
|
- # " }";
|
169
|
|
- # " return 'no_such_host';";
|
170
|
|
- # "}"; } > /etc/exim4/perl-routines.pl
|
171
|
|
-
|
172
|
|
- #{ "ONION_RELAYDB=/etc/exim4/onionrelay.cdb";
|
173
|
|
- # "domainlist onion_relays = cdb;ONION_RELAYDB"; } > /etc/exim4/conf.d/domainlists
|
174
|
|
-
|
175
|
|
- #{ "# send things over tor where we have an entry for it";
|
176
|
|
- # "onionrelays:";
|
177
|
|
- # " driver = manualroute";
|
178
|
|
- # " domains = +onion_relays";
|
179
|
|
- # " transport = onion_relay";
|
180
|
|
- # " # get the automap IP for the onion address from the tor daemon";
|
181
|
|
- # " route_data = \${perl{onionLookup}{\${lookup{\$domain}cdb{ONION_RELAYDB}}}}";
|
182
|
|
- # " no_more"; } > /etc/exim4/conf.d/router/50_exim4-config-onion
|
183
|
|
-
|
184
|
|
- #{ "onion_relay:";
|
185
|
|
- # " driver = smtp";
|
186
|
|
- # " socks_proxy = 127.0.0.1 port=9050"; } > /etc/exim4/conf.d/transport/50_exim4-config_onion
|
|
153
|
+ apt-get -yq install tinycdb perl
|
|
154
|
+
|
|
155
|
+ # MX record should be:
|
|
156
|
+ # _onion-mx._tcp.$DEFAULT_DOMAIN_NAME. 3600 IN SRV 0 5 25 $onion_address
|
|
157
|
+
|
|
158
|
+ echo "$DEFAULT_DOMAIN_NAME $onion_address" > /etc/exim4/onionrelay.txt
|
|
159
|
+ cdb -m -c -t ~/onionrelay.tmp /etc/exim4/onionrelay.cdb /etc/exim4/onionrelay.txt
|
|
160
|
+
|
|
161
|
+ { "perl_startup = do '/etc/exim4/perl-routines.pl'";
|
|
162
|
+ "perl_at_start"; } > /etc/exim4/conf.d/main/perl
|
|
163
|
+
|
|
164
|
+ { "use Net::DNS::Resolver;";
|
|
165
|
+ "sub onionLookup {";
|
|
166
|
+ " my \$hostname = shift;";
|
|
167
|
+ " my \$res = Net::DNS::Resolver->new(nameservers => [qw(127.0.0.1)],);";
|
|
168
|
+ " \$res->port(5300);";
|
|
169
|
+ " my \$query = \$res->search(\$hostname);";
|
|
170
|
+ " foreach my \$rr (\$query->answer) {";
|
|
171
|
+ " next unless \$rr->type eq \"A\";";
|
|
172
|
+ " return \$rr->address;";
|
|
173
|
+ " }";
|
|
174
|
+ " return 'no_such_host';";
|
|
175
|
+ "}"; } > /etc/exim4/perl-routines.pl
|
|
176
|
+
|
|
177
|
+ { "ONION_RELAYDB=/etc/exim4/onionrelay.cdb";
|
|
178
|
+ "domainlist onion_relays = cdb;ONION_RELAYDB"; } > /etc/exim4/conf.d/domainlists
|
|
179
|
+
|
|
180
|
+ { "# send things over tor where we have an entry for it";
|
|
181
|
+ "onionrelays:";
|
|
182
|
+ " driver = manualroute";
|
|
183
|
+ " domains = +onion_relays";
|
|
184
|
+ " transport = onion_relay";
|
|
185
|
+ " # get the automap IP for the onion address from the tor daemon";
|
|
186
|
+ " route_data = \${perl{onionLookup}{\${lookup{\$domain}cdb{ONION_RELAYDB}}}}";
|
|
187
|
+ " no_more"; } > /etc/exim4/conf.d/router/50_exim4-config-onion
|
|
188
|
+
|
|
189
|
+ { "onion_relay:";
|
|
190
|
+ " driver = smtp";
|
|
191
|
+ " socks_proxy = 127.0.0.1 port=9050"; } > /etc/exim4/conf.d/transport/50_exim4-config_onion
|
|
192
|
+
|
|
193
|
+ if ! grep -q "AutomapHostsOnResolve" /etc/tor/torrc; then
|
|
194
|
+ echo 'AutomapHostsOnResolve 1' >> /etc/tor/torrc
|
|
195
|
+ else
|
|
196
|
+ sed -i 's|#AutomapHostsOnResolve.*|AutomapHostsOnResolve 1|g' /etc/tor/torrc
|
|
197
|
+ sed -i 's|AutomapHostsOnResolve.*|AutomapHostsOnResolve 1|g' /etc/tor/torrc
|
|
198
|
+ fi
|
|
199
|
+
|
|
200
|
+ if ! grep -q "DNSPort " /etc/tor/torrc; then
|
|
201
|
+ echo 'DNSPort 5300' >> /etc/tor/torrc
|
|
202
|
+ else
|
|
203
|
+ sed -i 's|#DNSPort .*|DNSPort 5300|g' /etc/tor/torrc
|
|
204
|
+ sed -i 's|DNSPort .*|DNSPort 5300|g' /etc/tor/torrc
|
|
205
|
+ fi
|
|
206
|
+
|
|
207
|
+ if ! grep -q "DNSListenAddress" /etc/tor/torrc; then
|
|
208
|
+ echo 'DNSListenAddress 127.0.0.1' >> /etc/tor/torrc
|
|
209
|
+ else
|
|
210
|
+ sed -i 's|#DNSListenAddress.*|DNSListenAddress 127.0.0.1|g' /etc/tor/torrc
|
|
211
|
+ sed -i 's|DNSListenAddress.*|DNSListenAddress 127.0.0.1|g' /etc/tor/torrc
|
|
212
|
+ fi
|
|
213
|
+
|
|
214
|
+ dpkg-reconfigure --frontend noninteractive exim4-config
|
|
215
|
+ systemctl restart tor
|
|
216
|
+ systemctl restart exim4
|
187
|
217
|
|
188
|
218
|
mark_completed "${FUNCNAME[0]}"
|
189
|
219
|
}
|